黑马程序员技术交流社区

标题: 工厂设计模式 [打印本页]

作者: 刘郑瑞    时间: 2013-1-17 23:50
标题: 工厂设计模式
  1. <FONT color=red size=4><STRONG></STRONG></FONT>
复制代码
一 、工厂方法模式
  工厂方法模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品。

二、 工厂方法模式角色与结构
  抽象工厂角色:是工厂方法模式的核心,与应用程序无关。任何在模式中创建的对象的工厂类必须实现这个接口。
  具体工厂角色:这是实现抽象工厂接口的具体工厂类,包含与应用程序密切相关的逻辑,并且受到应用程序调用以创建产品对象。在上图中有两个这样的角色:BulbCreator与TubeCreator。
  抽象产品角色:工厂方法模式所创建的对象的超类型,也就是产品对象的共同父类或共同拥有的接口。在上图中,这个角色是Light。
  具体产品角色:这个角色实现了抽象产品角色所定义的接口。某具体产品有专门的具体工厂创建,它们之间往往一一对应。  

三、一个简单的实例 

  1. <FONT size=2>// 产品 Computer接口
  2. public interface Computer { }
  3. //具体产品Keyboard,Mouse
  4. public class Keyboard implements Computer {

  5.  public Keyboard () {
  6.   System.out.println("create Keyboard !");
  7.  }

  8.  public void doSomething() {
  9.   System.out.println(" Keyboard do something ...");
  10.  }
  11. }
  12. public class Mouse implements Computer {
  13.  public Mouse () {
  14.   System.out.println("create Mouse !");
  15.  }

  16.  public void doSomething() {
  17.   System.out.println(" Mouse do something ...");
  18.  }
  19. }
  20. // 产品 Animal接口
  21. public interface Animal{ }
  22. //具体产品Dog,cat
  23. public class Dog implements Animal{
  24.  public Dog() {
  25.   System.out.println("create Dog !");
  26.  }
  27.  public void doSomething() {
  28.   System.out.println(" Dog do something ...");
  29.  }
  30. }
  31. public class cat implements Animal{
  32.  public cat() {
  33.   System.out.println("create cat !");
  34.  }
  35.  public void doSomething() {
  36.   System.out.println(" cat do something ...");
  37.  }
  38. }
  39. // 抽象工厂方法
  40. public interface AbstractFactory {
  41.  public Computer createComputer();
  42.  public Animal createAnimal() ;
  43. }
  44. //具体工厂方法
  45. public class FactoryA implements AbstractFactory {
  46.  public Computer createComputer() {
  47.   return new Keyboard();
  48.  }
  49.  public Animal createAnimal() {
  50.   return new Dog();
  51.  }
  52. }
  53. public class FactoryB implements AbstractFactory {
  54.  public Computer createComputer() {
  55.   return new Mouse();
  56.  }
  57.  public Animal createAnimal() {
  58.   return new cat();
  59.  }
  60. } </FONT>
复制代码

作者: jonn    时间: 2013-1-18 01:27
学习ing....




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2