简单工厂模式
1.1UML图
1.2示例代码
class product {
publc:
product() {}
~product() {}
public:
virtual int getbumber() = 0;
}
class productA {
publc:
productA() {}
~productA() {}
public:
int getbumber() { std::cout << " is productB" << std::endl; return 0; }
}
class productB {
publc:
productB() {}
~productB() {}
public:
int getbumber() { std::cout << " is productB" << std::endl; return 1; }
}
class simplefactory {
public:
simplefactory() {}
~simplefactory() {}
public:
product* createproduct(char flag);
}
product* simplefactory:: createproduct(char flag) {
switch(flag) {
case '+' :
return new productA;
break;
case '-':
return new productB;
break;
default:
return NULL;
break;
}
return NULL;
}
int main() {
simplefactory testfactory;
product* baseproduct = testfactory.createproduct('+');
baseproduct.getbumber();
Return 0;
}
1.3分析
1.3.1优缺点分析
缺点: 1.此模式中,业务逻辑的判断都simplefactory 中,当需求发生变化或者 增减的时候,simplefactory 需要变化,违背了开闭原则。
2.simplefactory 包含了所有产品创建的逻辑,随着业务的扩展与修改, 会越来越复杂,风险就增加了。这样的类俗称:”上帝类”
优点: 1.客户端无需关系业务逻辑的细节,只需要向simplefactory 提出需求即 可,即客户端和具体实现类的解耦。