设计模式-抽象工厂

xiaoxiao2021-02-28  14

//抽象产品类A public 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的实现方法"); } } //抽象产品类B public 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(); } //具体工厂类1 public class Factory1 extends AbstractFactory{ //只生产等级为1的A产品 public AbstractProductA createProductA() { return new ProductA1(); } //只生产等级为1的B产品 public AbstractProductB createProductB() { return new ProductB1(); } } //具体工厂类2 public 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个工厂类,每个实现工厂负责不同产品族的生产。

转载请注明原文地址: https://www.6miu.com/read-1400288.html

最新回复(0)