首页 > 代码库 > 抽象工厂模式的C++、Java实现
抽象工厂模式的C++、Java实现
1、抽象工厂模式UML
图1. 抽象工厂模式的UML
2、C++实现
C++实现类图为:
图2. 抽象工厂模式的C++实现类图
其中,AbstractFactory的实现代码为:
1 //抽象工厂类基类。 2 class AbstractFactory 3 { 4 public: 5 AbstractFactory(); 6 ~AbstractFactory(); 7 8 //创建具体的产品的抽象工厂方法。 9 //创建A类对象。 10 virtual ProductA * CreateProductA() = 0; 11 12 //创建B类产品对象。 13 virtual ProductB * CreateProductB() = 0; 14 };
ConcreteFactoryA的实现代码为:
1 class ConcreteFactory1 : 2 public AbstractFactory 3 { 4 public: 5 ConcreteFactory1(); 6 ~ConcreteFactory1(); 7 8 //创建ConcreteProductA1的抽象工厂方法。 9 ProductA * CreateProductA(); 10 11 //创建ConcreteProductA1的抽象工厂方法。 12 ProductB * CreateProductB(); 13 14 };//end class ConcreteFactoryA 15 16 17 ProductA * ConcreteFactory1::CreateProductA() 18 { 19 ProductA * pa = new ConcreteProductA1(); 20 return pa; 21 }//end method CreateProductA 22 23 ProductB * ConcreteFactory1::CreateProductB() 24 { 25 ProductB * pb = new ConcreteProductB1(); 26 return pb; 27 }//end method CreateProductB
其中,ConcreteFactory2的代码与ConcreteFactory1的相似,不再列出。
3、Java的实现
Java实现的类视图为:
图3. 抽象工厂模式的Java实现类视图
其中,AbstractFactory的代码为:
1 //抽象工厂类。 2 public interface AbstractFactory { 3 4 //创建A类产品的抽象工厂方法。 5 public abstract ProductA CreateProductA(); 6 7 //创建B类产品的抽象工厂方法。 8 public abstract ProductB CreateProductB(); 9 10 }//end interface AbstractFactory
ConcreteFactory1的代码为:
1 public class ConcreteFactory1 implements AbstractFactory { 2 3 //创建ConcreteProductA1的对象。 4 @Override 5 public ProductA CreateProductA() { 6 // TODO Auto-generated method stub 7 return new ConcreteProductA1(); 8 }//end method CreateProductA 9 10 //创建ConcreteProductB1的对象。 11 @Override 12 public ProductB CreateProductB() { 13 // TODO Auto-generated method stub 14 return new ConcreteProductB1(); 15 }//end method CreateProductB 16 17 }//end class ConcreteFactory1
ConcreteFactory2的代码与ConcreteFactory1的相似,在此不再列出。
4、点击下载源码
抽象工厂模式的C++、Java实现
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。