抽象工厂模式-----对象创建型模式

抽象工厂模式:(详细:http://blog.csdn.net/liruikqn/article/details/12888511)
    目的:提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类型。意思就是通过工厂模式可以获取一个特定的对象,而不了解他是怎么被创建的。
    具体说明:抽象工厂模式通常是用于创建一族产品,并且这族产品分不同的等级;不同的具体工厂类生产不同等级的一族产品。抽象工厂模式也有四种角色: 抽象工厂、具体工厂、抽象产品和具体产品
    实现方式:
        1、创建一个接口作为抽象工厂:AbstractFactory
            //抽象工厂,定义了生产族产品的方法; 
            public interface AbstractFactory { 
               public ProductA factoryA(); 
               public ProductB factoryB(); 
            }
        2、创建一个或多个接口作为抽象产品:ProductA接口和ProductB接口
            //抽象产品A定义了产品的公共方法,产品A和B属于一个产品族 
            public interface ProductA { 
               public void method1(); 
               public void method2(); 
            }

            //抽象产品B定义了产品的公共方法,产品A和B属于一个产品族 
            public interface ProductB { 
               public void method1(); 
               public void method2(); 
            }
        3、创建具体的工厂类:ConcreteFactory1类(生产等级为1的族产品)和ConcreteFactory2类(生产等级为2的族产品)
             //ConcreateFactory1是用来生产等级为1的产品A,B; 
             public class ConcreateFactory1 implements AbstractFactory { 
                 //生产等级为1的产品A 
                 @Override 
                 public ProductA factoryA() { 
                     return new ConcreateProductA1(); 
                 }
         
                 //生产等级为1的产品B 
                 @Override 
                 public ProductB factoryB() { 
                     return new ConcreateProductB1(); 
                 } 
              }

             //ConcreateFactory1是用来生产等级为2的产品A,B; 
             public class ConcreateFactory2 implements AbstractFactory { 
                 //生产等级为2的产品A 
                 @Override 
                 public ProductA factoryA() { 
                     return new ConcreateProductA2(); 
                 }
         
                 //生产等级为2的产品B 
                 @Override 
                 public ProductB factoryB() { 
                     return new ConcreateProductB2(); 
                 } 
              }
        4、具体的产品
              具体产品(等级为1的A产品):ConcreteProductA1类
              //等级为1的具体产品A 
              public class ConcreateProductA1 implements ProductA {
                  @Override 
                  public void method1() { 
                      System.out.println("等级为1的产品A的method1()"); 
                   } 
     
                   @Override 
                   public void method2() { 
                      System.out.println("等级为1的产品A的method2()"); 
                   } 
                } 
               //同样等级为2的具体产品A
               //等级为1的具体产品B
               //等级为2的具体产品B

猜你喜欢

转载自wangxinhong4468.iteye.com/blog/2161212
今日推荐