A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘郑瑞 中级黑马   /  2013-1-17 23:50  /  1591 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  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>
复制代码

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

1 个回复

倒序浏览
学习ing....
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马