Factory——工厂方法

 1、定义spa

        GOF上对工厂方法的意图如此描述:定义一个用于建立对象的接口,让子类决定实例化哪一个类。Factory Method使一个类的实例化延迟到其子类。.net

         做为类的开发者,咱们一般会在类中提供构造器方法以便客户代码实例化该类。然而有时候,客户代码并不清楚该对几个类中的哪一类进行实例化。能够用工厂模式定义一个用于建立对象的接口,同时控制对哪一个类进行的实例化。日志


2、应用场景对象

         工厂方法模式的特征是:blog

         (1)方法建立了一个新的对象;接口

         (2)方法的返回类型为一个抽象类或接口;开发

         (3)有若干个类实现了上述抽象类型。get

       

3、类图遍历


                             

4、例子迭代器

       (1)工厂方法最典型的一个例子就是在迭代器模式中的应用,这里的工厂方法连接了两个平行的类层次结构。

        当一个类将它的一些职责委托给一个独立的类时,就产生了平行类层次。迭代器模式中,各个组合类型将遍历元素的操做独立出

来,造成了迭代器类层次。

        每一个组合类型都和一个相应类型的迭代器对应。组合类的对象须要实例化对应本身的迭代器(经过CreateIterator方法),这里的

CreateIterator方法就是工厂方法。 具体代码能够看以前的迭代器模式日志

      (2)工厂方法还能为子类提供hook,用工厂方法在一个类的内部建立对象一般比直接建立对象更为灵活。

        GOF的代码示例里利用了MazeGame的例子,基类提供了Maze,Room,Wall等的工厂方法默认实现。子类经过重载这些方法,

能够利用createMaze方法建立带有炸弹的迷宫。这样更有灵活性,由子类决定实例化哪一个类型的迷宫组件。

相关文章
相关标签/搜索