国内最全IT社区平台 联系我们 | 收藏本站
华晨云阿里云优惠2
您当前位置:首页 > php框架 > 框架设计 > 设计模式:原型模式

设计模式:原型模式

来源:程序员人生   发布时间:2015-01-07 08:07:17 阅读次数:3724次

原文地址:http://leihuang.org/2014/12/03/prototype/

Creational 模式

物件的产生需要消耗系统资源,所以如何有效力的产生、管理 与操作物件,1直都是值得讨论的课题, Creational 模式即与物件的建立相干,在这个分类下的模式给出了1些指点原则及设计的方向。下面罗列到的全属于Creational 模式

  • Simple Factory 模式
  • Abstract Factory 模式
  • Builder 模式
  • Factory Method 模式
  • Prototype 模式
  • Singleton 模式
  • Registry of Singleton 模式

您从图书馆的期刊从发现了几篇您感兴趣的文章,由于这是图书馆的书,您不可以直接在书中作记号或写字,所以您将当中您所感兴趣的几个主题影印出来,这下子您便可在影印的文章上画记重点。

上面这段情形就是利用了今天要讲的原型设计模式(prototype).

原型模式(prototype)它是指通过给定1个原型对象来指明所要创建的对象类型,然后复制这个原型对象的办法创建出同类型的对象。原型模式也属于创建模式。

img

原型模型触及到3个角色:

  • 客户角色(client):客户端提出创建对象的要求;
  • 抽象原型(prototype):这个常常由接口或抽象类来担负,给出具体原型类的接口;
  • 具体原型(Concrete prototype):实现抽象原型,是被复制的对象;

下面我们就来实现1个原型模式,比如呢,我们用不起mac(Mac接口),怎样办呢,我们仿制1个假的mac(ImitatedMac)出来吗.然后我们程序员(Coder)仍然可使用它.

Mac 接口

public interface Mac extends Cloneable{ public void play() ; public Object clone() ; }

ImitatedMac 实现Mac接口 --假的Mac

public class ImitatedMac implements Mac { @Override public Object clone() { try { return super.clone(); } catch (CloneNotSupportedException e) { e.printStackTrace(); return null ; } } @Override public void play() { System.out.println("哈哈,我是假的!"); } }

Coder 类 --程序员

public class Coder { public static void main(String[] args) { Mac mac = (Mac) new ImitatedMac().clone() ; mac.play(); } }

其实原型模型在java中的使用主要用到了clone方法,大家可以仔细浏览1下这篇博客,有助于理解原型设计模式.

  • 详解clone方法

2014⑴2-04 00:59:12

Brave,Happy,Thanksgiving !

生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠
程序员人生
------分隔线----------------------------
分享到:
------分隔线----------------------------
关闭
程序员人生