1.2ok工厂方法模式factory method
●别名:虚拟构造子(virtual constructor)模式,多态性(polymorphic Factory)工厂模式
●用意:创建一个创建产品对象的工厂接口,将实际创建工作推迟到子类中
●简单工厂模式与工厂方法模式区别
⏹工厂方法模式是简单工厂模式的进一步抽象和推广。由于使用了多态,工厂方法模
式保持了简单工厂模式的优点,而且克服了他的缺点。
⏹工厂方法模式核心是一个抽象工厂类,而简单工厂模式把核心放在一个具体类上。
⏹工厂方法模式退化后变得很像简单工厂模式。
●角
⏹抽象工厂角
⏹具体工厂角
⏹抽象产品角
⏹具体产品角
●优点
⏹允许系统在不修改具体工厂角的情况下引入新的产品。
●工厂方法返还的应当是抽象类型,而不是具体类型。这有这样才能保证产品的多态性。
●举例
⏹Collection接口的Iterator就是一个工厂方法。
●工厂方法模式和模板方法模式的关系
⏹工厂方法模式,经常和模版方法模式一起联合使用.
⏹模版方法本身也可能就是工厂方法模式
1.3ok抽象工厂模式Abstract factory
●用意:抽象工厂模式可以向客户端提供一个接口,使得客户端在不必指定产品的具体类
型的情况下,创建多个产品族的产品对象。
●抽象工厂模式与工厂方法模式最大的区别在于:
⏹工厂方法模式针对的是一个产品等级结构,抽象工厂模式则需要面对多个产品等级
结构.
⏹一个工厂等级结构可以创建出分属于不同产品等级结构的一个产品族中的所有对
象。显然,这时候抽象工厂模式比工厂方法模式更有效率。
⏹抽象工厂模式是工厂方法模式的进一步推广
●涉及的角
⏹抽象工厂角
⏹具体工厂类角
⏹抽象产品角
⏹具体产品角
●以下情况应当考虑使用抽象工厂模式
⏹一个系统不应当依赖于产品类实例如何被创建、组合和表达的细节。这对于所有形
态的工厂都是重要的。
◆java语言中的单例模式
⏹public static Runtime getRuntime()
◆在每一个java应用程序里面,都有唯一的一个Runtime对象。通过这个Runtime
对象,应用程序可以与其运行环境发生相互作用。
⏹public static Toolkit getDefaultToolkit()
◆单例类使用了简单工厂模式(又称静态方法工厂模式)来提供自己的实例
1.5ok多例模式multiton
●多例模式是单例模式的自然推广。
●多例模式的特点
⏹多例类可有多个实例
⏹多例类必须自己创建,管理自己的实例,并向外界提供自己的实例。
●有上限多例模式
⏹一个实例数目有上限的多例类.
⏹例如掷骰子。
⏹上限为1时候就是单例类。单例类是多例类的特殊情况。
⏹数量少可以用静态成员变量管理多例,数量多可以用静态的容器来管理多例。
●无上限多例模式
⏹实例数目没有上限的多例模式叫做无上限多例模式
●有状态和没有状态的多例类
⏹如同单例类可以分为有状态和没有状态两种,多例类也可以分为有状态和没有状态
两种。
1.6ok建造模式builder
●建造模式可以将一个产品的内部表象与产品的生产过程分割开来,从而可以使一个建造
过程生成具有不同的内部表象的产品对象
●角:
⏹抽象建造者(如果非常肯定系统只需要一个具体建造者角的话,可以省掉抽象建
造者角)
⏹具体建造者
⏹导演者(是与客户打交道的角)
⏹产品
●建造者模式将产品的结构和产品的零件建造过程对客户端隐藏起来,把对建造过程进行
指挥的责任和具体建造零件的责任分割开来,达到责任划分和分割的目的。
●模板方法设计模式和建造模式设计模式的区别
⏹退化的建造模式和模板方法有相似之处。
⏹如果系统要求发生变化,(有不同零件的生成逻辑),那么有两个选择,1,改回完
全的建造模式。改造成模板方法设计模式。
●javamail里的Message类就是一个退化的建造模式。
●什么时候用建造模式
⏹产品有复杂的内部结构。
⏹产品对象的属性相互依赖(有些情况下,一个对象的一些性质必须按照某个顺序赋
值才有意义,有些情况下,一个对象会有一些重要的性质,在他们没有恰当那个的
值之前,对象不能作为一个完整的产品使用。(比如邮件))。
⏹在对象创建过程中,会使用到系统中的其他一些对象。这些对象在产品对象创建过
程中不易得到。
⏹建造模式的使用使得产品的内部表象可以独立的变化。使用建造模式可以使客户端
不必知道产品内部组成的细节。
1.7原始模型prototype
有个原型,每次都不是new出来的是克隆出来的
这个方法用的很少.速度还不如new快呢.
1.8ok适配器模式Adapter
●也叫变压器模式
●也叫包装(wraper)模式
●适配器模式的用意:改变源的接口,以便与目标接口相容
●把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在java单例模式懒汉和饿汉
一起工作的两个类能够在一起工作。
●有两种,类的适配器模式,对象的适配器模式
⏹类的适配器模式把被适配的类的API转换成了目标类的API。Adaptee和Adapater
是继承的关系。这决定了这个适配器模式是类的。
⏹与类的适配器模式一样,对象的适配器模式把被适配的类的API转换成了目标类
的API。与类的适配器模式不同的是,对象的适配器模式不是使用继承关系连接到
Adaptee类,而是使用委派关系连接到Adaptee类。Adapter和Adaptee是委派关系。
决定了这个适配器模式的对象的。
●举例
⏹iterator与enumeration的适配
⏹Jdbc/odbc桥,就是适配器模式的具体应用.
●与装饰模式的关系
⏹装饰类不能改变他所装饰的对象的接口
1.9ok缺省适配模式Default Adapter
缺省适配器模式为一个接口提供缺省实现,这样子类可以从这个缺省实现来继承,而不必从原有接口来进行扩展。
适配器模式的用意是要改变源的接口,以便与目标类的接口相容。缺省适配器的用意稍有不

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。