一.概述 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象. 二.适用性 1.当一个系统应该独立于它的产品创建.构成和表示的时候. 2.当要实例化的类是在运行时刻指定的时候,例如:通过动态装载. 3.为了避免创建一个与产品类层次平行的工厂类层次的时候. 4.当一个类的实例只能有几个不同状态组合中的一种的时候. 建立相应数目的原型并克隆它们可能要比每次用合适的状态手工实例化该类更方便一些. 三.参与者 1.Prototype:声明一个克隆自身的接口. 2.ConcreteProtot…
一.概述 定义一个用于创建对象的接口,让子类去决定实例化哪个类.工厂方法将一个类的实例化延迟至其子类. 二.适用性 1.当一个类不知道它所必须创建的对象的类的时候. 2.当一个类希望由其子类来指定它所创建的对象的时候. 3.当类将创建对象的职责委托给多个帮助子类的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候. 三.参与者 1.Product:定义工厂方法所创建的对象的接口. 2.ConcreteProduct:实现Product接口. 3.Creator:声明工厂方法,该方法返…
一.概述 提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类. 二.适用性 1.一个系统要独立于它的产品的创建.组合和表示的时候. 2.一个系统要由多个产品系列中的一个来配置的时候. 3.当你要强调一系列相关的产品对象的设计以便进行联合使用的时候. 4.当你提供一个产品类库,而只想显示它们的接口而不是实现的时候. 三.参与者 1.AbstractFactory:声明一个创建抽象产品对象的操作接口. 2.ConcreteFactory:实现创建具体产品对象的操作. 3.Abstra…
一.概述 将一个复杂对象的构建与其表示分离开来,使得同样的构建过程可以创建不同的表示. 二.适用性 1.当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式的时候. 2.当构造过程必须允许被构造的对象有不同的表示的时候. 三.参与者 1.Builder:为创建一个Product对象的各个部件指定抽象接口. 2.ConcreteBuilder:实现Builder接口以构造和装配该产品的各个部件. 3.Director:构造一个使用Builder接口的对象. 4.Product:表示被构…
1概述 保证一个类仅有一个实例,并提供一个访问它的全局访问点. 2适用性 1.当类只能有一个实例而且客户可以从一个总所周知的访问点访问它的时候. 2.当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例的时候. 3参与者 Singleton:定义一个Instance操作,允许客户访问它的唯一实例.Instance是一个类的操作,可能复杂创建它自己的唯一实例. 4类图 5示例 Singleton package cn.lynn.singleton; public …
一.概述 抽象工厂模式是指当有多个抽象角色时,使用的一种工厂模式.抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体情况下,创建多个产品族中的产品对象. UML图: 其他的过多概念不再这里赘述,不如通过例子来实际感受与体会 二.实践 关键是搞清等级族的概念,这里以生产手机为例,假设生产小米5和小米6两个型号的手机,两个手机都有内存和处理器,但是内存和处理器的组合不同 :米5采用的是骁龙820+16G内存组合,而米6则是骁龙835+32G组合.生产对应产品的时候就会匹配对应的产品部…
本文是自己学习所做笔记,欢迎转载,但请注明出处:http://blog.csdn.net/jesson20121020 工厂方法模式和抽象工厂模式不好区分清楚: 工厂方法模式特点: 1. 一个抽象产品类,能够派生出多个详细产品类. 2. 一个抽象工厂类,能够派生出多个详细工厂类. 3. 每一个详细工厂类仅仅能创建一个详细产品类的实例. 抽象工厂模式特点: 1. 多个抽象产品类,每一个抽象产品类能够派生出多个详细产品类. 2. 一个抽象工厂类.能够派生出多个详细工厂类. 3. 每一个详细工厂类能够…
一.工厂模式(分为:简单工厂模式.工厂方法模式.抽象工厂模式) 实现了创建者和调用者的分离 核心本质:1.实例化对象,用工厂方法代替new操作:2.将选择实现类.创建对象统一管理和控制,从而将调用者跟实现类解耦. 简单工厂模式:用来生产同一等级结构中的任意产品(对于增加的新的产品,需要修改已有代码) 工厂方法模式:用来生产同一等级结构中的固定产品(支持增加任意产品) 抽象工厂模式:用来生产不同产品族中的全部产品(对于增加新的产品,无能为力.支持增加新的产品族) [扩展]面向对象设计的基本原则(核…
Java设计模式之[工厂模式](简单工厂模式,工厂方法模式,抽象工厂模式) 工厂模式出现的原因 在java中,创建一个对象最简单的方法就是使用new关键字.但在一些复杂的业务逻辑中,创建一个对象不只需要new一行代码就成了,可能需要一些列的初始化设置,或先创建一些辅助对象来创建这个对象. 在这种场景中,如果需要多次创建这种对象,那每次都要写很多代码.工厂模式的产生就是为了解决这种问题. 工厂模式厉害之处就在于:你不需要知道创建对象的细节就可以轻松的创建你想要的对象,并且产品和工厂是解耦的. 3种…
十一回了趟老家,十一前工作一大堆忙成了狗,十一回来后又积累了一大堆又 忙成了狗,今天刚好抽了一点空开始写工厂方法模式 我看了<Head First 设计模式>P109--P133 这25页,讲述了我们为什么要用工厂模式,里面用做pizza的例子讲的特别细腻.看完了就能很清楚的知道为什么要用工厂模式. 年龄越大越不喜欢一知半解,深刻的了解某些未知的事或物以后,它再出现就不怕了 #'New'有什么不对劲? 在技术上,new没有错,这是语言的基础部分.真正的犯人是我们的老朋友 ‘改变’, 以及它是如…