抽象工厂模式 可扩展的模式软件架构
它可以帮助我们构建灵活、抽象从而提高代码的工厂可维护性和可扩展性 。我们可以将产品的模式创建过程与使用过程分离
,
1. 定义产品接口

public interface Xiezi { void Run();}2. 实现具体产品

public class Caoxie implements Xiezi { @Override public void Run() { System.out.println("我是抽象草鞋....."); }}public class Tuoxie implements Xiezi { @Override public void Run() { System.out.println("我是拖鞋......."); }}3. 定义抽象工厂

public abstract class Factory { abstract Xiezi BuyXiezi(String type); abstract Yifu BuyYifu(String type);}4. 实现具体工厂
public class XieziFactory extends Factory { @Override Xiezi BuyXiezi(String type) { if (type.equals("草鞋")) { return new Caoxie(); } else if (type.equals("拖鞋")) { return new Tuoxie(); } return null; } @Override Yifu BuyYifu(String type) { return null; }}public class YifuFactory extends Factory { @Override Xiezi BuyXiezi(String type) { return null; } @Override Yifu BuyYifu(String type) { if (type.equals("衬衫")) { return new Chenshan(); } else if (type.equals("短袖")) { return new Duanxiu(); } return null; }}5. 创建工厂代理
public class FactoryDelegate { Factory CreateFactory(String type) { if (type.equals("鞋子")) { return new XieziFactory(); } else if (type.equals("衣服")) { return new YifuFactory(); } return null; }}6. 测试
public class test { public static void main(String[] args) { FactoryDelegate factoryDelegate = new FactoryDelegate(); factoryDelegate.CreateFactory("鞋子").BuyXiezi("草鞋").Run(); factoryDelegate.CreateFactory("鞋子").BuyXiezi("拖鞋").Run(); factoryDelegate.CreateFactory("衣服").BuyYifu("衬衫").Run(); factoryDelegate.CreateFactory("衣服").BuyYifu("短袖").Run(); }}C++实现:面向对象编程的典范
以下是一个使用C++实现的抽象工厂模式的示例 。
抽象工厂模式:构建灵活的工厂软件架构
Java实现:多态与接口的巧妙运用
在软件开发中,可扩展的模式软件架构。以下是抽象一个使用Java实现的抽象工厂模式的示例 。抽象工厂模式是工厂一种常用的设计模式,
1. 定义产品接口
class Xiezi { public: virtual void Run() = 0; virtual ~Xiezi() { }};class Yifu { public: virtual void Run() = 0; virtual ~Yifu() { }};2. 实现具体产品
class Tuoxie : public Xiezi { public: void Run() override { printf("拖鞋\n"); }};class CaoXie : public Xiezi { public: void Run() override { printf("草鞋\n"); }};class Chenshan : public Yifu { public: void Run() override { printf("衬衫\n"); }};class DuanXiu : public Yifu { public: void Run() override { printf("短袖\n"); }};3. 定义抽象工厂
class Factory { public: virtual Xiezi* BuyXiezi(int t) = 0; virtual Yifu* BuyYifu(int t) = 0; virtual ~Factory() { }};class XieziFactory : public Factory { public: Xiezi* BuyXiezi(int t) override { if (t == _CAOXIE) { return new CaoXie(); } else if (t == _TUOXIE) { return new Tuoxie(); } return NULL; } Yifu* BuyYifu(int t) override { return NULL; }};class YifuFactory : public Factory { public: Yifu* BuyYifu(int t) override { if (t == _DUANXIU) { return new DuanXiu(); } else if (t == _CHENSHAN) { return new Chenshan(); } return NULL; } Xiezi* BuyXiezi(int t) override { return NULL; }};4. 创建工厂代理
class FactoryDelegate { public: Factory* CreateFactory(int t) { if (t == _XIEZI) { return new XieziFactory(); } else if (t == _YIFU) { return new YifuFactory(); } return NULL; }};5. 测试
int main() { FactoryDelegate f; Factory* fac = f.CreateFactory(_XIEZI); Xiezi* x = fac->BuyXiezi(_CAOXIE); x->Run(); delete fac; delete x; fac = f.CreateFactory(_YIFU); Yifu* y = fac->BuyYifu(_DUANXIU); y->Run(); delete fac; delete y; return 0;}总结
抽象工厂模式是模式一种强大的设计模式 ,而不需要指定它们具体的抽象类。通过使用抽象工厂模式 ,工厂它提供了一种创建相关或依赖对象的模式接口 ,
抽象
