6.java设计模式(读书笔记)简单工厂模式、工厂方法模式、抽象工厂模式

来源:互联网 发布:js select2 默认选中 编辑:程序博客网 时间:2024/06/09 17:23

参考:

简单工厂模式和工厂方法模式:http://blog.csdn.net/jason0539/article/details/23020989

抽象工厂模式:http://blog.csdn.net/jason0539/article/details/44976775

抽象工厂模式与工厂方法模式的区别:http://blog.csdn.net/liruikqn/article/details/12888511

百度百科(感觉区分工厂方法和抽象工厂模式有点问题...)

http://baike.baidu.com/link?url=lJAWWdHY5CeRkiqfvim7Q4sWUvjOR4SlszIiotxzAfZWMDX6_FdfHdjMtRpRSLm2D54R98CkUYKcYfSSkXnBuYXqMdKcX-wlO1H1cXI8IOWTX0gNIxhbvnSNFMssaEwW

工厂模式可以分为3类:但其实简单工厂模式可以算作工厂方法模式

 工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。 

工厂模式可以分为3类:

1)简单工厂模式(Simple Factory) 
2)工厂方法模式(Factory Method) 
3)抽象工厂模式(Abstract Factory) 

我的理解:

简单工厂模式:

Sample320和Sample523都实现了ISample 接口,或者继承自ISample类

public class Factory{
    public static ISample creator(int which){
        if (which==1)
            return new Sample320();
        else if (which==2)
            return new Sample523();
    }
}

工厂方法模式:

简单工厂模式是把产品抽象成一个接口(320和523都是bwm)。

工厂方法模式就是在简单工厂模式的基础上把工厂也抽象一下。(总公司只建不同的厂(分别生成320.523)的实例,具体生成bwm车交给更下一级的工厂去实现)

产品类:

  1. abstract class BMW {  
  2.     public BMW(){  
  3.           
  4.     }  
  5. }  
  6. public class BMW320 extends BMW {  
  7.     public BMW320() {  
  8.         System.out.println("制造-->BMW320");  
  9.     }  
  10. }  
  11. public class BMW523 extends BMW{  
  12.     public BMW523(){  
  13.         System.out.println("制造-->BMW523");  
  14.     }  
  15. }  

创建工厂类:

  1. interface FactoryBMW {  
  2.     BMW createBMW();  
  3. }  
  4.   
  5. public class FactoryBMW320 implements FactoryBMW{  
  6.   
  7.     @Override  
  8.     public BMW320 createBMW() {  
  9.   
  10.         return new BMW320();  
  11.     }  
  12.   
  13. }  
  14. public class FactoryBMW523 implements FactoryBMW {  
  15.     @Override  
  16.     public BMW523 createBMW() {  
  17.   
  18.         return new BMW523();  
  19.     }  
客户类:

  1. public class Customer {  
  2.     public static void main(String[] args) {  
  3.         FactoryBMW320 factoryBMW320 = new FactoryBMW320();  
  4.         BMW320 bmw320 = factoryBMW320.createBMW();  
  5.   
  6.         FactoryBMW523 factoryBMW523 = new FactoryBMW523();  
  7.         BMW523 bmw523 = factoryBMW523.createBMW();  
  8. //我的理解
  9. BMW bwm523 = new FactoryBMW523().createBMW(); 
  10. BMW bwm320 = new FactoryBMW320().createBMW(); 
  11.     }  
  12. }  

抽象工厂模式:

每个具体工厂可以生产多种产品就是抽象工厂模式,如果只能生产一种产品就是工厂方法模式。

http://blog.csdn.net/liruikqn/article/details/12888511




0 0
原创粉丝点击