当前位置: 首页 > news >正文

经常访问的网站来打不开网站空间配置

经常访问的网站来打不开,网站空间配置,高要网站建设公司,医疗机械网站怎么做引言 工厂模式#xff08;Factory Pattern#xff09;是设计模式中创建型模式的一种#xff0c;它提供了一种创建对象的最佳方式。工厂模式的核心思想是将对象的创建与使用分离#xff0c;使得代码更加灵活、可扩展。工厂模式主要分为两种#xff1a;工厂方法模式和抽象工…引言 工厂模式Factory Pattern是设计模式中创建型模式的一种它提供了一种创建对象的最佳方式。工厂模式的核心思想是将对象的创建与使用分离使得代码更加灵活、可扩展。工厂模式主要分为两种工厂方法模式和抽象工厂模式。 本文将详细介绍工厂方法模式和抽象工厂模式的概念、实现方式以及在C中的应用。 工厂方法模式 概念 工厂方法模式Factory Method Pattern定义了一个创建对象的接口但由子类决定要实例化的类是哪一个。工厂方法模式让类的实例化推迟到子类。 优点 解耦将对象的创建与使用分离降低代码的耦合度。扩展性好新增产品类时只需增加相应的工厂类无需修改现有代码。符合开闭原则对扩展开放对修改关闭。 缺点 类的数量增加每增加一个产品类就需要增加一个对应的工厂类导致类的数量增加。复杂性增加对于简单的对象创建使用工厂方法模式可能会增加代码的复杂性。 实现 下面是一个简单的工厂方法模式的实现示例 #include iostream #include string// 产品接口 class Product { public:virtual ~Product() {}virtual void use() 0; };// 具体产品A class ProductA : public Product { public:void use() override {std::cout Using Product A std::endl;} };// 具体产品B class ProductB : public Product { public:void use() override {std::cout Using Product B std::endl;} };// 工厂接口 class Factory { public:virtual ~Factory() {}virtual Product* createProduct() 0; };// 具体工厂A class FactoryA : public Factory { public:Product* createProduct() override {return new ProductA();} };// 具体工厂B class FactoryB : public Factory { public:Product* createProduct() override {return new ProductB();} };int main() {Factory* factoryA new FactoryA();Product* productA factoryA-createProduct();productA-use();Factory* factoryB new FactoryB();Product* productB factoryB-createProduct();productB-use();delete productA;delete productB;delete factoryA;delete factoryB;return 0; } 应用场景 工厂方法模式适用于以下场景 不确定对象的类型当创建对象时不确定具体要创建哪种类型的对象。需要扩展当需要扩展系统增加新的产品类时使用工厂方法模式可以避免修改现有代码。 抽象工厂模式 概念 抽象工厂模式Abstract Factory Pattern提供一个创建一系列相关或相互依赖对象的接口而无需指定它们具体的类。抽象工厂模式是工厂方法模式的扩展它用于创建一组相关的对象。 优点 高内聚将相关的产品族集中在一起创建保证产品族的一致性。解耦将产品的创建与使用分离降低代码的耦合度。符合开闭原则对扩展开放对修改关闭。 缺点 类的数量增加每增加一个产品族就需要增加一个对应的工厂类导致类的数量增加。复杂性增加对于简单的对象创建使用抽象工厂模式可能会增加代码的复杂性。 实现 下面是一个简单的抽象工厂模式的实现示例 #include iostream #include string// 抽象产品A class AbstractProductA { public:virtual ~AbstractProductA() {}virtual void use() 0; };// 具体产品A1 class ProductA1 : public AbstractProductA { public:void use() override {std::cout Using Product A1 std::endl;} };// 具体产品A2 class ProductA2 : public AbstractProductA { public:void use() override {std::cout Using Product A2 std::endl;} };// 抽象产品B class AbstractProductB { public:virtual ~AbstractProductB() {}virtual void use() 0; };// 具体产品B1 class ProductB1 : public AbstractProductB { public:void use() override {std::cout Using Product B1 std::endl;} };// 具体产品B2 class ProductB2 : public AbstractProductB { public:void use() override {std::cout Using Product B2 std::endl;} };// 抽象工厂 class AbstractFactory { public:virtual ~AbstractFactory() {}virtual AbstractProductA* createProductA() 0;virtual AbstractProductB* createProductB() 0; };// 具体工厂1 class ConcreteFactory1 : public AbstractFactory { public:AbstractProductA* createProductA() override {return new ProductA1();}AbstractProductB* createProductB() override {return new ProductB1();} };// 具体工厂2 class ConcreteFactory2 : public AbstractFactory { public:AbstractProductA* createProductA() override {return new ProductA2();}AbstractProductB* createProductB() override {return new ProductB2();} };int main() {AbstractFactory* factory1 new ConcreteFactory1();AbstractProductA* productA1 factory1-createProductA();AbstractProductB* productB1 factory1-createProductB();productA1-use();productB1-use();AbstractFactory* factory2 new ConcreteFactory2();AbstractProductA* productA2 factory2-createProductA();AbstractProductB* productB2 factory2-createProductB();productA2-use();productB2-use();delete productA1;delete productB1;delete factory1;delete productA2;delete productB2;delete factory2;return 0; } 应用场景 抽象工厂模式适用于以下场景 产品族当需要创建一组相关的产品时使用抽象工厂模式可以保证产品族的一致性。跨平台当需要为不同的平台创建一组相关的产品时使用抽象工厂模式可以方便地切换平台。 总结 工厂模式是一种非常实用的设计模式它将对象的创建与使用分离使得代码更加灵活、可扩展。工厂方法模式适用于创建单一产品而抽象工厂模式适用于创建一组相关的产品。在实际开发中根据具体需求选择合适的工厂模式可以提高代码的可维护性和可扩展性。 希望本文能帮助你更好地理解工厂方法模式和抽象工厂模式的概念、实现方式以及应用场景。如果你有任何问题或建议欢迎在评论区留言讨论。
http://www.dnsts.com.cn/news/92242.html

相关文章:

  • 网站前置审批证书有赞微商城小程序
  • 怎么做彩票网站的代理广州建设交易中心官网
  • 哪里接单做网站大学生课程设计网站
  • 龙泉公路建设投资有限公司网站网站没有后台怎么更新文章
  • 百度提交网站收录入口com都有哪些网站
  • 做网站是什么会计科目网站后台密码破解教程
  • 品牌网站建设小科6蚪郑州最新出入通知
  • 揭阳高端品牌网站建设哈尔滨市工程建设项目网
  • 门户网站开发方案文档网站搭建是什么专业
  • 站长之家网站建设制作网店购物系统
  • 网页设计与网站建设湖南省郴州市临武县
  • 企业网站设计服务公司网站专题活动策划方案
  • 中国建设银行官网站wordpress建站行吗
  • 兰溪做网站哪家好python做网站原理
  • 微商城网站建设公司的价格找工作的平台
  • 网站后台登录地址企业网站写好如何发布
  • 教学成果奖网站建设厦门门户网站建设
  • 合肥网站建设 八八四八wordpress相册打造的视频弹出
  • 设计网站大全软件wordpress 学习
  • 望城警务督察网站建设四川城乡和建设厅网站
  • 记事本做网站怎么不行啦企业网站代码怎么优化
  • 网站建设公司怎么做业务北京网站排名公司
  • 厦门网站设计定制太原网站建设策划方案
  • 网站建设微金手指下拉15wordpress 下拉框图标
  • 在百度做个卷闸门网站怎么做网络舆情监测中心
  • 素材模板网站域名查询ip地址138
  • 网站建设技术团队有多重要性专业建设内涵包括哪些内容
  • 如何在门户网站做推广方案营销平台推广
  • 邢台网站优化建设互联网站是什么
  • 如何创建一个论坛网站住房和建设部执业资格注册中心网站