2013年2月 的存档

设计模式(8):创建型模式小结

细细琢磨了5个创建型模式,下面再做一个总结:
简单工厂模式的本质是:选择实现。
单例模式的本质是:控制实例数目。
抽象工厂模式的本质是:选择产品簇的实现。
建造者模式的本质是:分离整体构建算法和部件构造。
工厂模式的本质是:延迟到子类来选择实现。
原型模式的本质是:克隆生成对象。 阅读更多…

设计模式(7):简单工厂模式(Simple Factory)

提供一个创建对象实例的功能,而无须关心其具体实现。被创建实例的类型可以是接口、抽象类,也可以是具体的类。

适用情景

以下情况中选用简单工厂。
• 如果想要完全封装隔离具体实现,让外部只能通过接口来操作封装体,那么可
以选用简单工厂,让客户端通过工厂来获取相应的接口,而无须关心具体的实
现。
• 如果想要把对外创建对象的职责集中管理和控制,可以选用简单工厂, -个简
单工厂可以创建很多的、不相关的对象,可以把对外创建对象的职责集中到一
个简单工厂来, 从而实现集中管理和控制。
阅读更多…

设计模式(6):原型模式(Prototype)

  其特点在于通过“复制”一个已经存在的实例来返回新的实例,而不是新建实例。被复制的实例就是我们所称的“原型”,这个原型是可定制的。
  原型模式多用于创建复杂的或者耗时的实例,因为这种情况下,复制一个已经存在的实例使程序运行更高效;或者创建值相等,只是命名不一样的同类数据。
   阅读更多…

设计模式(5):建造者模式(Builder)

意图

  将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。

建造者模式的优点:

• 松散辑合
  生成器模式可以用同一个构建算法构建出表现上完全不同的产品,实现产品构建和产品表现上的分离。生成器模式正是把产品构建的过程独立出来,使它和具体产品的表现松散稿合,从而使得构建算法可以复用,而具体产品表现也可以灵活地、方便地扩展和切换。
• 可以很容易地改变产品的内部表示
  在生成器模式中,由于Builder 对象只是提供接口给Director 使用,那么具体的部件创建和装配方式是被Builder 接口隐藏了的, Director 并不知道这些具体的实现细节。这样一来,要想改变产品的内部表示,只需要切换Builder 的具体实现即可,不用管Director,因此变得很容易。
• 更好的复用性
  生成器模式很好地实现了构建算法和具体产品实现的分离。这样一来,使得构建产品的算法可以复用。同样的道理,具体产品的实现也可以复用,同一个产品的实现,可以配合不同的构建算法使用。
阅读更多…

设计模式(4):抽象工厂模式(Abstract Factory)

  抽象工厂模式是所有形态的工厂模式中最为抽象和最具一般性的一种形态。抽象工厂模式是指当有多个抽象角色时,使用的一种工厂模式。抽象工厂模式提供了一种方式,可以将一组具有同一主题的单独的工厂封装起来。在正常使用中,客户端程序需要创建抽象工厂的具体实现,然后使用抽象工厂作为接口来创建这一主题的具体对象。客户端程序不需要知道(或关心)它从这些内部的工厂方法中获得对象的具体类型,因为客户端程序仅使用这些对象的通用接口。抽象工厂模式将一组对象的实现细节与他们的一般使用分离开来。
  “工厂”是创建产品(对象)的地方,其目的是将产品的创建与产品的使用分离。抽象工厂模式的目的,是将若干抽象产品的接口与不同主题产品的具体实现分离开。这样就能在增加新的具体工厂的时候,不用修改引用抽象工厂的客户端代码。
   阅读更多…