摘要: 举例:刚给我的客厅做了装修,朋友也希望给他的客厅做装修,他可能会把我家的装修方案拿过来改改就成,我的装修方案就是原型。定义:使用原型实例指定将要创建的对象类型,通过复制这个实例创建新的对象。应用场景:当创建一些非常耗时的大对象或者创建过程非常复杂时。复制原型对象不一定是指从内存中进行复制,原型数据也可能保存在数据库里。一般情况下,OOP 语言都提供了内存中对象的复制能力,Java 语言提供了对象的浅拷贝。浅拷贝(Shallow copy):复制一个对象时,如果它的一个属性是引用,则复制这个引用,使之指向内存中同一个对象;深拷贝(Deep copy):复制一个对象时,为此属性创建了一个新对象,让 阅读全文
posted @ 2013-07-12 16:37 林℃度尒钬 阅读(934) 评论(0) 推荐(1) 编辑
摘要: 工厂方法模式:定义:为创建对象定义一个接口,让子类决定实例化哪个类。工厂方法让一个类的实例化延迟至子类。应用场景:客户类不关心使用哪个具体类,只关心该接口所提供的功能;创建过程比较复杂,例如需要初始化其他关联的资源类,读取配置文件等;接口有很多具体实现或者抽象有很多具体子类时,你可能需要为客户代码写一大串 if-else 逻辑来决定运行时使用哪个具体实现或者具体子类;不希望给客户程序暴露过多此类的内部结构,隐藏这些细节可以降低耦合度;优化性能,比如缓存大对象或者初始化比较耗时的对象。工厂方法模式://工厂接口定义了 createProduct()方法来放回 Product 类型的实例对象pub 阅读全文
posted @ 2013-07-12 15:26 林℃度尒钬 阅读(881) 评论(0) 推荐(0) 编辑
摘要: 单例(Singleton)模式:保证一个类在系统里只能有一个对象被实例化。如:缓存池、数据库连接池、线程池、一些应用服务实例等。难点:在多线程环境中,保证实例的唯一性。最简单的单例模式:保证该类构造方法是私有的,外部无法创建该类型的对象;提供一个全局访问点,方便给客户对象提供对此单例对象的使用;public class Singleton { /** * 私有变量,外界无法访问 * 可以定义 public 类型 instance变量,把属性直接暴露给客户对象,则没必要实现getInstance()方法 * 但是可读性降低,而且直接暴露实例变量的名字给客户程序,会增... 阅读全文
posted @ 2013-07-12 09:50 林℃度尒钬 阅读(2388) 评论(0) 推荐(1) 编辑