介绍在简单工厂模式中,我们提到,工厂方法模式是简单工厂模式的一个延伸,它属于Gof23中设计模式的创建型设计模式。它解决的仍然是软件设计中与创建对象有关的问题。它可以更好的处理客户的需求变化。引入我们继续来说"new"的问题,我们在简单工厂模式中,将实例化对象的工作推迟到了专门负责创建对象的工厂类中...
分类:
其他好文 时间:
2014-12-23 13:49:13
阅读次数:
292
概述
提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
适用性
1.一个系统要独立于它的产品的创建、组合和表示时。
2.一个系统要由多个产品系列中的一个来配置时。
3.当你要强调一系列相关的产品对象的设计以便进行联合使用时。
4.当你提供一个产品类库,而只想显示它们的接口而不是实现时。...
分类:
其他好文 时间:
2014-12-22 22:50:26
阅读次数:
240
一、简单工厂模式
简单工厂:简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承
自一个父类或接口)的实例。
优点:简单工厂模式最大的优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,
对于客户端来说,去除了与具体产品的依赖。
缺点:由于工厂类集中了所有实例的创建逻辑,违反了高内聚责任分配原则,将全部创建逻...
分类:
其他好文 时间:
2014-12-22 09:36:31
阅读次数:
204
简单工厂模式
简单工厂严格来说并不算一种设计模式,因为它违反了“开放-封边”原则。简单工厂是通过分支来判断选择实例化哪一个类。这样如果需求更改,就需要更改工厂类。这种设计是糟糕的。
工厂模式
工厂方法模式是简单工厂模式的进一步抽象和推广,由于使用了多态性,工厂方法模式保持了简单工厂模式的有点,而且克服了简单工厂模式的缺点。但它的确定是每增加一个产品就需要增加一个产品的工厂类,增加了额外的开发...
分类:
其他好文 时间:
2014-12-21 19:26:16
阅读次数:
146
需求:商场收银软件,根据客户购买物品的单价和数量,计算费用,会有促销活动,打八折,满三百减一百之类的。一,使用工厂模式。# -*- encoding: utf-8 -*-#现金收费抽象类class CashSuper def accept_cash(money) endend#正常收费子...
分类:
其他好文 时间:
2014-12-21 19:22:46
阅读次数:
165
之前有看过《ruby设计模式》,不过渐渐的都忘记了。现在买了一个大话设计模式,看起来不是那么枯燥,顺便将代码用ruby实现了一下。# -*- encoding: utf-8 -*-#运算类class Operation attr_accessor :number_a,:number_b ...
分类:
其他好文 时间:
2014-12-21 16:29:58
阅读次数:
143
概述
定义一个用于创建对象的接口,让子类决定实例化哪一个类。FactoryMethod使一个类的实例化延迟到其子类。
适用性
1.当一个类不知道它所必须创建的对象的类的时候。
2.当一个类希望由它的子类来指定它所创建的对象的时候。
3.当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这...
分类:
其他好文 时间:
2014-12-21 11:33:18
阅读次数:
169
一、工厂方法模式
简单工厂模式的缺陷就是类的创建太过于依赖工厂,一旦需要进行程序扩展,就必须修改工厂类的代码
这违背了背包原则。
而工厂方法模式针对这一问题进行了改进。
public interface Sender {
public void send();
}
public interface producer {
public Sender produce();
}
...
分类:
其他好文 时间:
2014-12-21 00:44:42
阅读次数:
186
1.定义
抽象工厂是一种常用的对象创建型设计模式。抽象工厂模式提供了一种方式,可以将一组具有统一主题的单独工厂封装起来,它提供一个创建一系列相关或相互依赖对象的接口,而无需制定它们具体的类。
2.结构
抽象工厂的结构图如下所示:
AbstractFactory : 声明一个创建抽象产品对象的操作接口
ConcreteFactory : 实现创建具体产品对象的操作
AbstractP...
分类:
其他好文 时间:
2014-12-20 15:38:17
阅读次数:
187
工厂模式包括工厂方法模式和抽象工厂模式。而抽象工厂模式是工厂方法模式的扩展。
在工厂模式下,我们通常采用工厂方法来代替new来实例化对象。
具体是如何做的呢?
首先,定义一个接口来创建对象,但是让子类来决定那些类需要被实例化。工厂方法把实例化的工作推迟到子类中去实现。
应用场景
有一组类似的对象需要...
分类:
其他好文 时间:
2014-12-19 21:50:54
阅读次数:
156