设计模式-抽象工厂

来源:互联网 发布:无间道 港片 知乎 编辑:程序博客网 时间:2024/05/17 06:54
//抽象产品类Apublic abstract class AbstractProductA {    //每个产品共有方法    public void commonMethod(){}    //每个产品相同方法,不同实现    public abstract void doSomething();}
//等级为1的产品A的实现类public class ProductA1 extends AbstractProductA{    public void doSomething(){        System.out.println("产品A1的实现方法");    }}
//等级为2的产品A的实现类public class ProductA2 extends AbstractProductA{    public void doSomething(){        System.out.println("产品A2的实现方法");    }}
//抽象产品类Bpublic abstract class AbstractProductB {    //每个产品共有方法    public void commonMethod(){}    //每个产品相同方法,不同实现    public abstract void doSomething();}
//等级为1的产品B的实现类public class ProductB1 extends AbstractProductB{    public void doSomething(){        System.out.println("产品B1的实现方法");    }}
//等级为2的产品B的实现类public class ProductB2 extends AbstractProductB{    public void doSomething(){        System.out.println("产品B2的实现方法");    }}
//抽象工厂public abstract class AbstractFactory {    //创建A产品家族    public abstract AbstractProductA createProductA();    //创建B产品家族    public abstract AbstractProductB createProductB();}
//具体工厂类1public class Factory1 extends AbstractFactory{    //只生产等级为1的A产品    public AbstractProductA createProductA() {        return new ProductA1();    }    //只生产等级为1的B产品    public AbstractProductB createProductB() {        return new ProductB1();    }}
//具体工厂类2public class Factory2 extends AbstractFactory{    //只生产等级为2的A产品    public AbstractProductA createProductA() {        return new ProductA2();    }    //只生产等级为2的B产品    public AbstractProductB createProductB() {        return new ProductB2();    }}
public class Main {    public static void main(String[] args) {        //不同工厂        AbstractFactory factory1 = new Factory1();        AbstractFactory factory2 = new Factory2();        //产品A        AbstractProductA a1 = factory1.createProductA();        AbstractProductA a2 = factory2.createProductA();        //产品B        AbstractProductB b1 = factory1.createProductB();        AbstractProductB b2 = factory2.createProductB();    }}

有M个产品等级就应该有M个工厂类,每个实现工厂负责不同产品族的生产。