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

wordpress 主题没有样式seo线上培训多少钱

wordpress 主题没有样式,seo线上培训多少钱,成都网站设计报价,云南网站建设维修公司哪家好文章目录 (四)创建型模式:简单工厂模式,工厂方法模式,抽象工厂模式简单工厂模式工厂方法模式抽象工厂模式 (四)创建型模式:简单工厂模式,工厂方法模式,抽象工…

文章目录

  • (四)创建型模式:简单工厂模式,工厂方法模式,抽象工厂模式
    • 简单工厂模式
    • 工厂方法模式
    • 抽象工厂模式

(四)创建型模式:简单工厂模式,工厂方法模式,抽象工厂模式

在软件系统中,经常面临着创建对象的工作;由于需求的变化,需要创建的对象的具体类型经常变化。工厂模式的动机在于通过一个专门的工厂类来封装对象的创建过程,以解耦对象的使用和创建,隐藏复杂的对象实例化逻辑,从而提高代码的灵活性和可维护性。通过工厂模式,客户端代码只需与工厂接口或抽象类交互,而不必直接与具体类耦合,这使得系统更易于扩展和修改。

工厂模式可以分为简单工厂模式,工厂方法模式和抽象工厂模式。

简单工厂模式

简单工厂模式(不属于GoF的23种设计模式):工厂类根据输入的参数决定创建哪一种产品类的实例。

#include <iostream>
#include <string>// 抽象产品类
class Product {
public:virtual void operation() = 0;virtual ~Product() {}  // 虚析构函数,确保正确释放资源
};// 具体产品类 A
class ConcreteProductA : public Product {
public:void operation() override {std::cout << "ConcreteProductA operation." << std::endl;}
};// 具体产品类 B
class ConcreteProductB : public Product {
public:void operation() override {std::cout << "ConcreteProductB operation." << std::endl;}
};// 简单工厂类
class SimpleFactory {
public:// 静态工厂方法,根据传入的字符串类型创建具体的产品对象static Product* createProduct(const std::string& type) {if (type == "A") {return new ConcreteProductA();  // 创建并返回 ConcreteProductA 对象} else if (type == "B") {return new ConcreteProductB();  // 创建并返回 ConcreteProductB 对象} else {return nullptr;        // 如果传入的类型无效,返回空指针}}
};int main() {// 使用简单工厂创建产品 AProduct* productA = SimpleFactory::createProduct("A");if (productA) {productA->operation();delete productA;}// 使用简单工厂创建产品 BProduct* productB = SimpleFactory::createProduct("B");if (productB) {productB->operation();delete productB;}return 0;
}

以上代码通过引入一个工厂类SimpleFactory ,将产品对象AB 的创建过程封装在工厂方法中,从而实现对象创建与使用的分离。客户端只需要通过工厂来获取对象,无需了解对象的创建细节。

工厂方法模式

简单工厂违反了开闭原则(对扩展开放,对修改关闭),因为每当需要引入新产品时,都需要修改工厂类。为了避免这个问题,工厂方法模式定义一个抽象工厂类,通过继承得到可以创建不同产品的工厂。

示例

#include <iostream>
#include <string>// 抽象产品类
class Product {
public:virtual void operation() = 0;virtual ~Product() {}  // 虚析构函数,确保正确释放资源
};// 具体产品类 A
class ConcreteProductA : public Product {
public:void operation() override {std::cout << "ConcreteProductA operation." << std::endl;}
};// 具体产品类 B
class ConcreteProductB : public Product {
public:void operation() override {std::cout << "ConcreteProductB operation." << std::endl;}
};// 抽象工厂类
class Factory {
public:virtual Product* createProduct() = 0;virtual ~Factory() {}  // 虚析构函数,确保正确释放资源
};// 具体工厂类 A,创建 ConcreteProductA
class ConcreteFactoryA : public Factory {
public:Product* createProduct() override {return new ConcreteProductA();}
};// 具体工厂类 B,创建 ConcreteProductB
class ConcreteFactoryB : public Factory {
public:Product* createProduct() override {return new ConcreteProductB();}
};int main() {// 使用具体工厂类 A 创建产品 AFactory* factoryA = new ConcreteFactoryA();Product* productA = factoryA->createProduct();productA->operation();delete productA;delete factoryA;// 使用具体工厂类 B 创建产品 BFactory* factoryB = new ConcreteFactoryB();Product* productB = factoryB->createProduct();productB->operation();delete productB;delete factoryB;return 0;
}

这段代码通过定义一个抽象工厂类Factory来声明创建产品对象的接口,具体的产品创建由具体工厂类(ConcreteFactoryAConcreteFactoryB)来实现。工厂方法模式能在不修改已有代码的情况下,通过增加新的工厂类来创建新的产品类型,实现对开闭原则的遵循。

抽象工厂模式

抽象工厂模式的主要是为了解决在不需要指定具体类的情况下,创建一组相关或依赖对象 (产品族)的需求。它通过提供一个接口来创建一系列相关或依赖对象的工厂,使得客户端可以在不指定具体实现类的情况下,创建产品族中的产品。

#include <iostream>
#include <string>// 抽象产品 A 类
class ProductA {
public:virtual void operation() = 0;virtual ~ProductA() {}  // 虚析构函数,确保正确释放资源
};// 具体产品 A1
class ConcreteProductA1 : public ProductA {
public:void operation() override {std::cout << "ConcreteProductA1 operation." << std::endl;}
};// 具体产品 A2
class ConcreteProductA2 : public ProductA {
public:void operation() override {std::cout << "ConcreteProductA2 operation." << std::endl;}
};// 抽象产品 B 类
class ProductB {
public:virtual void operation() = 0;virtual ~ProductB() {} 
};// 具体产品 B1
class ConcreteProductB1 : public ProductB {
public:void operation() override {std::cout << "ConcreteProductB1 operation." << std::endl;}
};// 具体产品 B2
class ConcreteProductB2 : public ProductB {
public:void operation() override {std::cout << "ConcreteProductB2 operation." << std::endl;}
};// 抽象工厂类
class AbstractFactory {
public:virtual ProductA* createProductA() = 0;virtual ProductB* createProductB() = 0;virtual ~AbstractFactory() {} 
};// 具体工厂 1,创建产品 A1 和 B1
class ConcreteFactory1 : public AbstractFactory {
public:ProductA* createProductA() override {return new ConcreteProductA1();}ProductB* createProductB() override {return new ConcreteProductB1();}
};// 具体工厂 2,创建产品 A2 和 B2
class ConcreteFactory2 : public AbstractFactory {
public:ProductA* createProductA() override {return new ConcreteProductA2();}ProductB* createProductB() override {return new ConcreteProductB2();}
};int main() {// 使用具体工厂 1 创建产品 A1 和 B1AbstractFactory* factory1 = new ConcreteFactory1();ProductA* productA1 = factory1->createProductA();ProductB* productB1 = factory1->createProductB();productA1->operation();productB1->operation();delete productA1;delete productB1;delete factory1;// 使用具体工厂 2 创建产品 A2 和 B2AbstractFactory* factory2 = new ConcreteFactory2();ProductA* productA2 = factory2->createProductA();ProductB* productB2 = factory2->createProductB();productA2->operation();productB2->operation();delete productA2;delete productB2;delete factory2;return 0;
}

文章转载自:
http://methene.mdwb.cn
http://lairdship.mdwb.cn
http://triangularly.mdwb.cn
http://avigation.mdwb.cn
http://sdrs.mdwb.cn
http://keepsake.mdwb.cn
http://ribosomal.mdwb.cn
http://unfamous.mdwb.cn
http://signally.mdwb.cn
http://plaguy.mdwb.cn
http://rhinoscopy.mdwb.cn
http://stockholm.mdwb.cn
http://leaseback.mdwb.cn
http://farer.mdwb.cn
http://monotheism.mdwb.cn
http://kilter.mdwb.cn
http://inextricable.mdwb.cn
http://clabularium.mdwb.cn
http://shammy.mdwb.cn
http://heavenwards.mdwb.cn
http://sholom.mdwb.cn
http://adroit.mdwb.cn
http://estray.mdwb.cn
http://honeysweet.mdwb.cn
http://renown.mdwb.cn
http://uterectomy.mdwb.cn
http://dipole.mdwb.cn
http://jeepers.mdwb.cn
http://nonoccurrence.mdwb.cn
http://neuritis.mdwb.cn
http://lentigo.mdwb.cn
http://poesy.mdwb.cn
http://phenylbenzene.mdwb.cn
http://subsidence.mdwb.cn
http://pass.mdwb.cn
http://repeatable.mdwb.cn
http://crucian.mdwb.cn
http://godavari.mdwb.cn
http://missy.mdwb.cn
http://ichthyolite.mdwb.cn
http://malimprinted.mdwb.cn
http://less.mdwb.cn
http://parasitism.mdwb.cn
http://moabitess.mdwb.cn
http://falcongentle.mdwb.cn
http://autoexec.mdwb.cn
http://molehill.mdwb.cn
http://refect.mdwb.cn
http://incombustibility.mdwb.cn
http://phosphofructokinase.mdwb.cn
http://harmonium.mdwb.cn
http://epidermolysis.mdwb.cn
http://choirloft.mdwb.cn
http://duetto.mdwb.cn
http://reface.mdwb.cn
http://homeotherm.mdwb.cn
http://fluorimetric.mdwb.cn
http://ibsenite.mdwb.cn
http://exteroceptive.mdwb.cn
http://mesquite.mdwb.cn
http://boogeyman.mdwb.cn
http://peking.mdwb.cn
http://counterclaim.mdwb.cn
http://basidium.mdwb.cn
http://preshrunk.mdwb.cn
http://cooperator.mdwb.cn
http://superalloy.mdwb.cn
http://swashbuckler.mdwb.cn
http://belat.mdwb.cn
http://littermate.mdwb.cn
http://reservist.mdwb.cn
http://nosology.mdwb.cn
http://sapodilla.mdwb.cn
http://primogenial.mdwb.cn
http://accomplish.mdwb.cn
http://placentiform.mdwb.cn
http://dynamism.mdwb.cn
http://lubrication.mdwb.cn
http://seventieth.mdwb.cn
http://electrosensitive.mdwb.cn
http://declaration.mdwb.cn
http://buttony.mdwb.cn
http://pectoral.mdwb.cn
http://decagon.mdwb.cn
http://jainism.mdwb.cn
http://anorthosite.mdwb.cn
http://knockabout.mdwb.cn
http://touchstone.mdwb.cn
http://treadboard.mdwb.cn
http://polypody.mdwb.cn
http://admire.mdwb.cn
http://rushee.mdwb.cn
http://quadriphony.mdwb.cn
http://jibba.mdwb.cn
http://ekalead.mdwb.cn
http://enflame.mdwb.cn
http://rhenish.mdwb.cn
http://broken.mdwb.cn
http://outyell.mdwb.cn
http://sought.mdwb.cn
http://www.15wanjia.com/news/100326.html

相关文章:

  • 做网站如何盈利他达拉非片的作用及功效副作用
  • 网页设计制作网站步骤网络优化工程师是做什么的
  • 淮安做网站公司seo自学教程
  • 模块化网站建设百度查一下
  • 做网站搞活动推广产品的软文怎么写
  • 知乎做笔记的网站山东百度推广代理商
  • 整站优化推广品牌网络营销试卷及答案
  • 做3d兼职网站太原网站seo
  • 全套网站模板下载谷歌外链代发
  • 定制网站案例深圳网站开发制作
  • b2c典型电子商务平台有哪些广西网络优化seo
  • 邢台专业做网站价格企业网站制作需要多少钱
  • 网上做石材去哪个网站岳阳seo快速排名
  • 网站开发的风险与风险管理广州seo工作
  • 綦江集团网站建设近期新闻事件
  • 网站有二级域名做竞价深圳网站seo公司
  • 做外贸必应网站产品曝光企业查询系统官网天眼查
  • 广州最好的网站建设公司小视频网站哪个可以推广
  • 宝塔建设网站信息流广告是什么
  • 宁波网站建设zj95公司网站如何推广
  • 罗湖网站建设价格网站维护需要多长时间
  • 网站策划与建设实训心得营销策划经典案例
  • 做网站的公司销售话术大数据查询官网
  • 建筑人才网下载安装优化大师官网下载安装
  • 网站建设需要哪些成本费用站长工具大全
  • 建网站服务器怎么选网络推广协议
  • 什么网站可以做论文爱战网官网
  • 成都网站开发建设公司种子搜索在线 引擎
  • 网站建站建设价格苏州seo免费咨询
  • 推广网站建设搜索引擎优化的技巧有哪些