C++设计模式学习-工厂方法模式-创新互联
图解创新互联建站主要从事网页设计、PC网站建设(电脑版网站建设)、wap网站建设(手机版网站建设)、响应式网站、程序开发、网站优化、微网站、微信平台小程序开发等,凭借多年来在互联网的打拼,我们在互联网网站建设行业积累了丰富的成都网站制作、成都网站建设、网站设计、网络营销经验,集策划、开发、设计、营销、管理等多方位专业化运作于一体。理论
分享文章:C++设计模式学习-工厂方法模式-创新互联
链接地址:http://cqwzjz.cn/article/ipihj.html
将一个大的工厂抽象出来,然后每一个类都有一个对应的具体的工厂
缺点:
类的个数成倍增加(增加一个类,就要增加一个对应的工厂),从而导致类越来越多,增加了维护的成本
增加了系统的抽象性和理解难度
好处:
符合开闭原则
实现了对象创建和使用的分离
系统的可扩展性变得很好,无需修改接口和原类
使用场景:
客户端不知道他所需要的对象的类
抽象工厂类通过其子类来指定创建哪个对象
代码
#includeusing namespace std;
class abstractFruit {public:
virtual void showName() = 0;
};
class Apple : public abstractFruit {public:
void showName() override {cout<< "i am apple"<< endl;
}
};
class Banana : public abstractFruit {public:
void showName() override {cout<< "i am Banana"<< endl;
}
};
// 抽象工厂
class AbstractFactory {public:
virtual abstractFruit* CreateFruit() = 0;
};
//苹果工厂
class AppleFactory : public AbstractFactory {public :
abstractFruit* CreateFruit() override {return new Apple;
}
};
//香蕉工厂
class BananaFactory : public AbstractFactory {public :
abstractFruit* CreateFruit() override {return new Banana;
}
};
void test01() {AbstractFactory * factory = nullptr;
abstractFruit* fruit = nullptr;
factory = new AppleFactory;
fruit = factory->CreateFruit();
fruit->showName();
delete fruit;
delete factory;
factory = new BananaFactory;
fruit = factory->CreateFruit();
fruit->showName();
delete fruit;
delete factory;
}
int main() {test01();
return 0;
}
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
分享文章:C++设计模式学习-工厂方法模式-创新互联
链接地址:http://cqwzjz.cn/article/ipihj.html