点滴积累,融会贯通

-----喜欢一切有兴趣的东西

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

  简单工厂模式

简单工厂模式根据提供给他的数据,返回几个可能类中的一个类的实例,通常它返回的类都有一个共同的父类和共同的方法,但每个方法的执行的任务不同。

简单工厂能返回具有同样方法的类的实例,他们可以是不同的派生类的实例,也可以是实际上毫无关系仅仅是享用了相同接口的类,这些类实例中的方法必须是相同的,并且能够被交替使用。

工厂模式

工厂方法模式对简单工厂模式进行巧妙的扩展,它不是一个专门的类来决定实例化哪一个子类。相反,超类把这种决定延迟到每个子类,这种模式实际上没有决策点,即没有直接选择一个子类实例化的决策。按这种模式编写的程序定义了一个抽象类,它去创建对象,但让子类来决定创建哪一种对象。

 使用工厂方法的情况:

1 一个类无法预测它要创建的对象属于哪一个类

2 一个类用它的子类来指定所创建的对象

3 把要创建哪一个类的信息局部化的时候

抽象工厂模式

抽象工厂模式比工厂模式具有更高层次的抽象性,当要返回一系列相关类中的某一个,而每个类都能根据需要返回不同的对象时,可以使用这种模式。

抽象工厂的一个主要目的是它能隔离要生成的具体类,这些类的实际类名隐藏在工厂里,在客户端根本不需要知道。由于类的隔离,可以自由改动或交换这些生成类系列。此外,由于只生成一类具体的类,系统会避免读者误用不同生成系列中的类。

尽管抽象工厂生成的所有类都具有相同的基类,但还是无法避免某些子类具有额外的,与其他类不同的方法。

两种解决方案:

1 在基类中定义所有的方法,即使这些方法没有实际的功能

2 再派生出新的基类接口,它包含所有方法和所有类型的子类

posted on 2007-08-07 11:01  小寒  阅读(624)  评论(0编辑  收藏  举报