1.抽象的产品类
//不变 public abstract class AbstractProductA { //伪代码,具体功能按照实际 需求添加方法 } //不变 public abstract class AbstractProductB { }
2.抽象的工厂类
//不变 public abstract class AbstractFactory { public abstract AbstractProductA CreateProductA(); public abstract AbstractProductB CreateProductB(); }
3.客户端的程序
//不变 public class Client { private AbstractFactory factory; public Client(AbstractFactory factory){ this.factory=factory; } public AbstractProductA GetProductA(){ return this.factory.CreateProductA(); } public AbstractProductB GetProductB(){ return this.factory.CreateProductB(); } }
至此,以上都是应用抽象工厂基本不变的代码。接下来就是具体的实现类,也就是根据变化的需求给出变化的代码
4.具体产品类
public class ProductA1 extends AbstractProductA{ } public class ProductA2 extends AbstractProductA { } public class ProductB1 extends AbstractProductB { } public class ProductB2 extends AbstractProductB { }
5.具体工厂类
public class FactoryA extends AbstractFactory { @Override public AbstractProductA CreateProductA() { return new ProductA1(); } @Override public AbstractProductB CreateProductB() { // TODO Auto-generated method stub return new ProductB1(); } } public class FactoryB extends AbstractFactory { @Override public AbstractProductA CreateProductA() { // TODO Auto-generated method stub return new ProductA2(); } @Override public AbstractProductB CreateProductB() { // TODO Auto-generated method stub return new ProductB2(); } }
6.应用
AbstractFactory factory=new FactoryA();//读取配置文件 Client client=new Client(factory); client.GetProductA(); client.GetProductB();//实际应用中,只需要把实例化工厂类的代码改成读取配置文件,那以后如果要新增产品,那只需要新增具体的产品类和工厂类,并修改下配置文件,就整体替换了。
时间: 2024-10-05 11:22:54