概述
1 工厂模式
工厂模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法让一个类的实例化延迟到其子类
2 简单工厂模式实现加减乘除
简单工厂模式:其最大优点在于工厂类包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖
简单工厂模式实现计算机的加减乘除:
简单工厂类的实现
class OperatorFactory{
public:
AbstractCalculator* creatOperate(string str){
AbstractCalculator *oper = NULL;
if(str == "+"){
oper = new(ADDCalculator);
}else if (str == "-"){
oper= new(SUbCalculator);
}else if (str == "*"){
oper = new(MulCalculator);
}else if (str == "/"){
oper = new(DivCalculator);
}else{
cout << "false!!!!!" << endl;
}
return oper;
}
};
客户端实现:
int main(){
AbstractCalculator *oper;
OperatorFactory factory;
oper = factory.creatOperate("+");
oper->m_Num1 = 1999;
oper->m_Num2 = 7234.44;
cout << oper->m_Num1 << " + " << oper->m_Num2 << " = " << oper->getResult() << endl;
return 0;
}
3 工厂模式实现加减乘除
工厂类的实现:
创建一个工厂接口
class IOperatorFactory{
public:
virtual AbstractCalculator* createOperate() = 0;
};
然后加减乘除各建一个具体工厂实现这个接口
class AddFactory: public IOperatorFactory{
public:
AbstractCalculator* createOperate(){
return new ADDCalculator;
}
};
class SubFactory: public IOperatorFactory{
public:
AbstractCalculator* createOperate(){
return new SUbCalculator;
}
};
class MulFactory: public IOperatorFactory{
public:
AbstractCalculator* createOperate(){
return new MulCalculator;
}
};
class DivFactory: public IOperatorFactory{
public:
AbstractCalculator* createOperate(){
return new DivCalculator;
}
};
客户端实现:
int main(){
AbstractCalculator *oper;
IOperatorFactory *factory = new AddFactory;
oper = factory->createOperate();
oper->m_Num1 = 1999;
oper->m_Num2 = 7234.44;
cout << oper->m_Num1 << " + " << oper->m_Num2 << " = " << oper->getResult() << endl;
return 0;
}
工厂模式把简单工厂的内部逻辑判断转移到了客户端进行,想要添加功能时,本来改的是工厂类,现在修改的是客户端
工厂方法克服了简单工厂违背开放-封闭原则的缺点,又保持了封装对象创建过程的优点。
两者都是集中封装了对象的创建,使得要更换对象时,不需要做大的改动就可以实现,降低了客户程序与产品对象的耦合
最后
以上就是鲜艳小虾米为你收集整理的工厂模式(C++实现)1 工厂模式2 简单工厂模式实现加减乘除3 工厂模式实现加减乘除的全部内容,希望文章能够帮你解决工厂模式(C++实现)1 工厂模式2 简单工厂模式实现加减乘除3 工厂模式实现加减乘除所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复