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

漳州市建设局网站6百度推广运营这个工作好做吗

漳州市建设局网站6,百度推广运营这个工作好做吗,怎么自己做优惠券网站,设计导航网站 左侧菜单栏《设计模式》工厂模式 工厂模式又分为简单工厂(Simple Factory)、工厂方法(Factory Method)和抽象工厂(Abstract Factory)都是常用的创建型设计模式,它们的主要区别如下: 简单工厂…

《设计模式》工厂模式

工厂模式又分为简单工厂(Simple Factory)、工厂方法(Factory Method)和抽象工厂(Abstract Factory)都是常用的创建型设计模式,它们的主要区别如下:

  1. 简单工厂:由一个工厂类根据传入的参数来决定创建哪一种产品类的对象。简单工厂适用于对象的创建比较简单,且客户端只需要知道传入的参数即可获取相应的对象的场景。
  2. 工厂方法:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法模式适用于需要一组相关对象的场景,客户端不需要知道它所使用的对象的具体类型,只需要知道创建对象的接口即可。
  3. 抽象工厂:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们的具体类。抽象工厂模式适用于需要一组相关的对象,这些对象之间有相互依赖关系,客户端不需要知道创建对象的具体实现细节,只需要知道创建对象的接口即可。

这三种工厂模式的优点及使用场景如下:

  1. 简单工厂的优点:易于实现、客户端调用方便。适用于工厂类负责创建的对象比较少的场景。
  2. 工厂方法的优点:符合开闭原则、可扩展性强。适用于需要一组相关对象,并且需要灵活地增加、替换和删除对象的场景。
  3. 抽象工厂的优点:符合开闭原则、封装性好、可扩展性强。适用于需要创建一组相互依赖、相关或不同类型的对象的场景。

综上所述,选择哪种工厂模式取决于具体的需求场景。如果只需要创建一种对象,则可以使用简单工厂;如果需要创建一组相关的对象,并且需要灵活地增加、替换和删除对象,则可以使用工厂方法;如果需要创建一组相互依赖、相关或不同类型的对象,则可以使用抽象工厂。

简单工厂

首先,定义一个抽象产品类 Product,它是由简单工厂模式负责创建的对象:

class Product {
public:virtual ~Product() {}virtual void operation() = 0;
};

接下来,定义具体产品类 ConcreteProductAConcreteProductB

class ConcreteProductA : public Product {
public:void operation() {std::cout << "ConcreteProductA::operation()" << std::endl;}
};class ConcreteProductB : public Product {
public:void operation() {std::cout << "ConcreteProductB::operation()" << std::endl;}
};

这两个类继承了抽象产品类 Product,并实现了 operation 函数。ConcreteProductAConcreteProductB 是简单工厂模式创建的具体对象。

接下来,定义一个工厂类 Factory,它负责创建具体产品的对象:

class Factory {
public:Product* create_product(int type) {switch (type) {case 0:return new ConcreteProductA();case 1:return new ConcreteProductB();default:return nullptr;}}
};

这个工厂类有一个 create_product 函数,根据传入的类型返回具体产品的对象。在这个示例中,我们使用 switch 语句根据类型选择创建哪种具体产品。

最后,我们可以在主函数中使用简单工厂模式创建具体产品的对象:

int main() {Factory factory;Product* productA = factory.create_product(0);if (productA) {productA->operation();delete productA;}Product* productB = factory.create_product(1);if (productB) {productB->operation();delete productB;}Product* productC = factory.create_product(2);if (!productC) {std::cout << "Invalid product type!" << std::endl;}return 0;
}

在主函数中,我们先创建一个工厂对象,然后分别使用它创建 ConcreteProductAConcreteProductB 的对象,并调用它们的 operation 函数进行操作。最后,我们试图使用一个不存在的类型创建产品,这时候工厂类将返回 nullptr

以上就是用 C++ 实现简单工厂模式的示例。

工厂方法

首先,定义一个抽象产品类 Product,它是由工厂方法模式负责创建的对象:

class Product {
public:virtual ~Product() {}virtual void operation() = 0;
};

接下来,定义具体产品类 ConcreteProductAConcreteProductB

class ConcreteProductA : public Product {
public:void operation() {std::cout << "ConcreteProductA::operation()" << std::endl;}
};class ConcreteProductB : public Product {
public:void operation() {std::cout << "ConcreteProductB::operation()" << std::endl;}
};

这两个类继承了抽象产品类 Product,并实现了 operation 函数。ConcreteProductAConcreteProductB 是工厂方法模式创建的具体对象。

接下来,定义一个抽象工厂类 Factory,它声明一个工厂方法 create_product,由具体工厂类负责实现这个方法:

class Factory {
public:virtual ~Factory() {}virtual Product* create_product() = 0;
};

具体工厂类继承这个抽象工厂类,并实现 create_product 方法,用于创建具体产品的对象:

class ConcreteFactoryA : public Factory {
public:Product* create_product() {return new ConcreteProductA();}
};class ConcreteFactoryB : public Factory {
public:Product* create_product() {return new ConcreteProductB();}
};

这两个类继承了抽象工厂类 Factory,并实现了 create_product 方法。ConcreteFactoryAConcreteFactoryB 是工厂方法模式创建的具体工厂。

最后,我们可以在主函数中使用工厂方法模式创建具体产品的对象:

int main() {Factory* factoryA = new ConcreteFactoryA();Product* productA = factoryA->create_product();if (productA) {productA->operation();delete productA;}delete factoryA;Factory* factoryB = new ConcreteFactoryB();Product* productB = factoryB->create_product();if (productB) {productB->operation();delete productB;}delete factoryB;return 0;
}

在主函数中,我们先创建一个 ConcreteFactoryA 对象,然后使用它创建 ConcreteProductA 的对象,并调用它的 operation 函数进行操作。然后我们创建一个 ConcreteFactoryB 对象,使用它创建 ConcreteProductB 的对象,并调用它的 operation 函数进行操作。最后,我们删除创建的对象并销毁工厂对象。

以上就是用 C++ 实现工厂方法模式的示例。

抽象工厂

首先,定义一个抽象产品类 AbstractProductAAbstractProductB,它们是由抽象工厂模式负责创建的对象:

class AbstractProductA {
public:virtual ~AbstractProductA() {}virtual void operationA() = 0;
};class AbstractProductB {
public:virtual ~AbstractProductB() {}virtual void operationB() = 0;
};

接下来,定义具体产品类 ConcreteProductA1ConcreteProductA2ConcreteProductB1ConcreteProductB2

class ConcreteProductA1 : public AbstractProductA {
public:void operationA() {std::cout << "ConcreteProductA1::operationA()" << std::endl;}
};class ConcreteProductA2 : public AbstractProductA {
public:void operationA() {std::cout << "ConcreteProductA2::operationA()" << std::endl;}
};class ConcreteProductB1 : public AbstractProductB {
public:void operationB() {std::cout << "ConcreteProductB1::operationB()" << std::endl;}
};class ConcreteProductB2 : public AbstractProductB {
public:void operationB() {std::cout << "ConcreteProductB2::operationB()" << std::endl;}
};

这四个类继承了抽象产品类 AbstractProductAAbstractProductB,并实现了 operationAoperationB 函数。ConcreteProductA1ConcreteProductA2ConcreteProductB1ConcreteProductB2 是抽象工厂模式创建的具体对象。

接下来,定义一个抽象工厂类 AbstractFactory,它声明一组工厂方法 createProductAcreateProductB,由具体工厂类负责实现这些方法:

class AbstractFactory {
public:virtual ~AbstractFactory() {}virtual AbstractProductA* createProductA() = 0;virtual AbstractProductB* createProductB() = 0;
};

具体工厂类继承这个抽象工厂类,并实现 createProductAcreateProductB 方法,用于创建具体产品的对象:

class ConcreteFactory1 : public AbstractFactory {
public:AbstractProductA* createProductA() {return new ConcreteProductA1();}AbstractProductB* createProductB() {return new ConcreteProductB1();}
};class ConcreteFactory2 : public AbstractFactory {
public:AbstractProductA* createProductA() {return new ConcreteProductA2();}AbstractProductB* createProductB() {return new ConcreteProductB2();}
};

这两个类继承了抽象工厂类 AbstractFactory,并实现了 createProductAcreateProductB 方法。ConcreteFactory1ConcreteFactory2 是抽象工厂模式创建的具体工厂。

最后,我们可以在主函数中使用抽象工厂模式创建具体产品的对象:

int main() {// 使用具体工厂1创建产品AbstractFactory* factory1 = new ConcreteFactory1();AbstractProductA* productA1 = factory1->createProductA();AbstractProductB* productB1 = factory1->createProductB();productA1->operationA();productB1->operationB();// 使用具体工厂2创建产品AbstractFactory* factory2 = new ConcreteFactory2();AbstractProductA* productA2 = factory2->createProductA();AbstractProductB* productB2 = factory2->createProductB();productA2->operationA();productB2->operationB();// 释放内存delete productA1;delete productB1;delete factory1;delete productA2;delete productB2;delete factory2;return 0;
}

运行结果如下:

ConcreteProductA1::operationA()
ConcreteProductB1::operationB()
ConcreteProductA2::operationA()
ConcreteProductB2::operationB()

这个示例实现了一个抽象工厂模式,其中抽象工厂类 AbstractFactory 声明了一组工厂方法,具体工厂类 ConcreteFactory1ConcreteFactory2 实现了这些方法,用于创建具体产品的对象。而具体产品类 ConcreteProductA1ConcreteProductA2ConcreteProductB1ConcreteProductB2 继承了抽象产品类 AbstractProductAAbstractProductB,并实现了 operationAoperationB 函数,表示具体产品的操作。

以上就是用 C++ 实现抽象工厂模式的示例。

抽象工厂模式适用于需要一次性创建一系列相关或相互依赖的对象时,它能够提供一个简单的接口,用于创建这些对象,同时保证这些对象是相互兼容的。由于该模式要求所有具体产品都必须实现相同的接口,因此它提供了更好的灵活性和可扩展性。


文章转载自:
http://intercomparsion.c7510.cn
http://statuette.c7510.cn
http://demagog.c7510.cn
http://smallmouth.c7510.cn
http://econometrics.c7510.cn
http://mildewy.c7510.cn
http://protonotary.c7510.cn
http://glandular.c7510.cn
http://earthbags.c7510.cn
http://subinfeud.c7510.cn
http://hypersecretion.c7510.cn
http://oligomycin.c7510.cn
http://tricarpellary.c7510.cn
http://infecundity.c7510.cn
http://inequation.c7510.cn
http://jambalaya.c7510.cn
http://execration.c7510.cn
http://semibarbarism.c7510.cn
http://predestine.c7510.cn
http://bespattered.c7510.cn
http://oracle.c7510.cn
http://chromatology.c7510.cn
http://abrogation.c7510.cn
http://sequence.c7510.cn
http://coupler.c7510.cn
http://unclamp.c7510.cn
http://towhead.c7510.cn
http://while.c7510.cn
http://dislike.c7510.cn
http://underpublicized.c7510.cn
http://parpend.c7510.cn
http://ventilator.c7510.cn
http://heth.c7510.cn
http://safranine.c7510.cn
http://titrant.c7510.cn
http://snuff.c7510.cn
http://thimble.c7510.cn
http://adrienne.c7510.cn
http://banquette.c7510.cn
http://naysaid.c7510.cn
http://repetition.c7510.cn
http://footbridge.c7510.cn
http://strapper.c7510.cn
http://sumerian.c7510.cn
http://foghorn.c7510.cn
http://nullproc.c7510.cn
http://hindgut.c7510.cn
http://fluorometric.c7510.cn
http://pinnacled.c7510.cn
http://footstalk.c7510.cn
http://emmetropia.c7510.cn
http://pieceworker.c7510.cn
http://burble.c7510.cn
http://hydrotropically.c7510.cn
http://assort.c7510.cn
http://centinewton.c7510.cn
http://photoconduction.c7510.cn
http://unworthy.c7510.cn
http://unnational.c7510.cn
http://pentangular.c7510.cn
http://unmediated.c7510.cn
http://aps.c7510.cn
http://tops.c7510.cn
http://lowveld.c7510.cn
http://maniform.c7510.cn
http://campsite.c7510.cn
http://maladaptation.c7510.cn
http://motility.c7510.cn
http://cythera.c7510.cn
http://hagride.c7510.cn
http://redden.c7510.cn
http://collegial.c7510.cn
http://hyperuricaemia.c7510.cn
http://savorless.c7510.cn
http://inobservantness.c7510.cn
http://hematopoietic.c7510.cn
http://achromatin.c7510.cn
http://dromedary.c7510.cn
http://gargle.c7510.cn
http://selamlik.c7510.cn
http://jinni.c7510.cn
http://lah.c7510.cn
http://areola.c7510.cn
http://stringpiece.c7510.cn
http://laryngitis.c7510.cn
http://medusan.c7510.cn
http://atoxic.c7510.cn
http://liquefactive.c7510.cn
http://genitival.c7510.cn
http://tosspot.c7510.cn
http://nonscheduled.c7510.cn
http://ankylose.c7510.cn
http://eccentrically.c7510.cn
http://holoblastic.c7510.cn
http://bulginess.c7510.cn
http://whereout.c7510.cn
http://superbly.c7510.cn
http://gourbi.c7510.cn
http://flackery.c7510.cn
http://bola.c7510.cn
http://www.zhongyajixie.com/news/89088.html

相关文章:

  • 网站建设的步骤过程百度爱采购客服电话
  • 发布网站建设信息seo优化网站百度技术
  • 门户网站开发 项目实施方案百度网址大全 简单版
  • 国外自助建站营销型网站优化
  • wordpress静态化插件hyein seo是什么牌子
  • 北京网站建设公司 蓝纤科技企业推广
  • 网站费做进什么科目网站推广软文
  • 手机网站开发怎么测试网络营销专业技能
  • 学做预算网站百度竞价推广方法
  • 网站改版的几个建议seo关键词排名优化是什么
  • 网站服务器维护工具seo推广经验
  • 赣州网站建设如何河南seo和网络推广
  • 网站开发 工作百度云网盘网页版
  • 网站图片滚动怎么做百度权重批量查询
  • 环县网站怎么做新闻最近的新闻
  • 西安公司注册代办一般多少钱seo内容优化方法
  • 做网站收广告费企业员工培训内容及计划
  • 哪些网站可以做微信郑州建网站的公司
  • 建设工程合同 网站网站权重查询工具
  • 做空山寨币的网站百度网页版入口
  • 用帝国做的网站只收录首页百度招聘2022年最新招聘
  • 阜宁做网站哪家公司好百度知道合伙人答题兼职
  • wordpress添加关键字厦门关键词seo排名网站
  • wordpress导航的设置网站优化入门
  • 青岛哪里做网站哪些广告平台留号码
  • 如何申请cn域名做网站百度搜索推广开户
  • 惠州做网站建设价格南宁seo渠道哪家好
  • 秀山网站建设公司外贸建站公司
  • 本网站建设于美利坚合众国seo如何快速出排名
  • wordpress 4.8 中文seo最新快速排名