创建型模式:Abstract Factory(抽象工厂)

WIKI:http://zh.wikipedia.org/wiki/%E6%8A%BD%E8%B1%A1%E5%B7%A5%E5%8E%82%E6%A8%A1%E5%BC%8F




abstract class AbstractProductA{
     public abstract void operationA1();
     public abstract void operationA2();
}

class ProductA1 extends AbstractProductA{
     ProductA1(String arg){
          System.out.println("ProductA1: Hello "+arg);
     } 
     public void operationA1() { };
     public void operationA2() { };
}

class ProductA2 extends AbstractProductA{
     ProductA2(String arg){
          System.out.println("ProductA2: Hello "+arg);
     } 
     public void operationA1() { };
     public void operationA2() { };
}

abstract class AbstractProductB{
     //public abstract void operationB1();
     //public abstract void operationB2();
}

class ProductB1 extends AbstractProductB{
     ProductB1(String arg){
          System.out.println("ProductB1: Hello "+arg);
     } 
}

class ProductB2 extends AbstractProductB{
     ProductB2(String arg){
          System.out.println("ProductB2: Hello "+arg);
     } 
}

abstract class AbstractFactory{
     abstract AbstractProductA createProductA();
     abstract AbstractProductB createProductB();
}

class ConcreteFactory1 extends AbstractFactory{
     AbstractProductA createProductA(){
          return new ProductA1("ConcreteFactory1");
     }
     AbstractProductB createProductB(){
          return new ProductB1("ConcreteFactory1");
     }
}

class ConcreteFactory2 extends AbstractFactory{
     AbstractProductA createProductA(){
          return new ProductA2("ConcreteFactory2");
     }
     AbstractProductB createProductB(){
          return new ProductB2("ConcreteFactory2");
     }
}

public class AbFactoryExample{
     public static void main(String args[]){
          AbstractFactory pf1 = new ConcreteFactory1();
          AbstractProductA product1 = pf1.createProductA();
          
          AbstractFactory pf2 = new ConcreteFactory2();
          AbstractProductA product2 = pf2.createProductA();
     }
}


“工厂”是创建产品(对象)的地方,其目的是将产品的创建与产品的使用分离。抽象工厂模式的目的,是将若干抽象产品的接口与不同主题产品的具体实现分离开。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值