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

廊坊做网站价格优化加速

廊坊做网站价格,优化加速,无锡做网站优化价格,新开传奇网站服抽象工厂模式 介绍示例示例使用运行结果抽象工厂模式的优缺点优点缺点 总结 介绍 抽象工厂模式是一种创建型设计模式,它提供了一种封装一组相关或相互依赖对象的方式,而无需指定它们具体的类。它允许客户端使用抽象接口来创建一系列相关的对象&#xff…

抽象工厂模式

  • 介绍
  • 示例
  • 示例使用
  • 运行结果
  • 抽象工厂模式的优缺点
    • 优点
    • 缺点
  • 总结

介绍

抽象工厂模式是一种创建型设计模式,它提供了一种封装一组相关或相互依赖对象的方式,而无需指定它们具体的类。它允许客户端使用抽象接口来创建一系列相关的对象,而不必关心其实际的实现细节。

在抽象工厂模式中,存在一个抽象工厂类,该类定义了一组创建对象的方法,这些方法可以创建一系列相关的对象,包括产品对象和工厂对象。由于这些对象都是通过一个抽象接口来创建的,因此它们的具体实现可以被隐藏在实际工厂类的后面。客户端只需要使用抽象工厂类来创建对象,而无需关心它们的实际实现。(理解这个很重要,就是多态的应用)

通过使用抽象工厂模式,我们可以实现高层模块的隔离和解耦,从而使系统更加灵活和可扩展。它还具有高度的封装性,可以隐藏底层实现细节,提高系统的安全性和稳定性。但是它的缺点是增加了系统的复杂性,需要定义更多的抽象类和接口,会增加系统的开发和维护的难度。

示例

这里依旧在之前两篇工厂模式的基础之上,进行改进。
这里客户需要工厂生产塑料的笔筒和铁制笔筒,另外还想生产塑料剑和铁制的剑。
下面是示例代码:

class Sword //剑
{
public:virtual void play() = 0;
};class PlasticSword :public Sword //塑料剑
{
public:void play()override {cout << "塑料剑舞动!!" << endl;}
};class IronSword :public Sword //铁制剑
{
public:void play()override {cout << "铁制剑舞动!!" << endl;}
};class AbstractFactory 
{
public:virtual PenHolder* createPenHolder() = 0;virtual Sword* createSword() = 0;
};class ProductPlasticFactory :public AbstractFactory 
{
public:PenHolder *createPenHolder()override {return new PlasticPenHolder;}Sword* createSword()override {return new PlasticSword;}
};class ProductIronFactory :public AbstractFactory 
{
public:PenHolder* createPenHolder()override {return new IronPenHolder;}Sword* createSword()override {return new IronSword;}
};

示例使用

int main() 
{AbstractFactory *factory1 = new ProductPlasticFactory;PenHolder*pen_Holder1= factory1->createPenHolder();Sword* sword1 =  factory1->createSword();pen_Holder1->introduce();sword1->play();delete factory1;delete pen_Holder1;delete sword1;AbstractFactory *factory2 = new ProductIronFactory;PenHolder* pen_Holder2 = factory2->createPenHolder();Sword* sword2 = factory2->createSword();pen_Holder2->introduce();sword2->play();delete factory2;delete pen_Holder2;delete sword2;return 0;
}

运行结果

在这里插入图片描述

抽象工厂模式的优缺点

优点

1.分离接口和实现:客户端代码只需要使用抽象工厂和抽象产品,不需要关注具体实现,降低了客户端与具体实现的耦合度,提高了代码的可维护性和可扩展性。

2.符合开闭原则:通过增加具体工厂和具体产品的实现,可以增加新的功能和新的产品,而不需要修改代码。(这里只是针对现有的产品种类而言,随着新产品的增加,需要修改抽象工厂的接口,继而也需要修改子工厂的接口,这样就破坏了开放封闭原则。)

3.保持一致性:抽象工厂模式可以保证一组产品的一致性,使得它们在逻辑上或者物理上都相互配合,满足一定的约束条件。

缺点

1.增加复杂度:引入抽象工厂和多个抽象产品的层次结构,增加了系统的复杂度,增加了开发难度。

2.不易扩展:一旦增加了一个新的产品族,就需要修改抽象工厂和所有的具体工厂和产品,对系统的维护和扩展带来了一定的困难。

3.限制产品族内的产品等级结构:由于抽象工厂只定义了一组产品的创建接口,因此它限制了具体产品等级结构的扩展,只能在产品族内扩展产品。

总结

抽象工厂设计模式确实很抽象,所以需要慢慢领悟,多悟几次,然后再后期的开发中就可以融进自己的项目中,提高程序的封装性,安全性,但复杂性也随之增加。


文章转载自:
http://natterjack.tsnq.cn
http://anglophile.tsnq.cn
http://oviferous.tsnq.cn
http://woodruffite.tsnq.cn
http://lamplighter.tsnq.cn
http://ninety.tsnq.cn
http://horsecouper.tsnq.cn
http://sexcapade.tsnq.cn
http://munificence.tsnq.cn
http://belize.tsnq.cn
http://psychics.tsnq.cn
http://mazout.tsnq.cn
http://groundfire.tsnq.cn
http://unsubsidized.tsnq.cn
http://epigraphy.tsnq.cn
http://capsulary.tsnq.cn
http://sapremia.tsnq.cn
http://corinthian.tsnq.cn
http://bivouacked.tsnq.cn
http://geordie.tsnq.cn
http://officialis.tsnq.cn
http://xcv.tsnq.cn
http://countertop.tsnq.cn
http://mucous.tsnq.cn
http://soniferous.tsnq.cn
http://vegetation.tsnq.cn
http://moorland.tsnq.cn
http://circumradius.tsnq.cn
http://pimpernel.tsnq.cn
http://cryptography.tsnq.cn
http://pandemic.tsnq.cn
http://stalactic.tsnq.cn
http://impropriator.tsnq.cn
http://niersteiner.tsnq.cn
http://contracyclical.tsnq.cn
http://acclimation.tsnq.cn
http://contraction.tsnq.cn
http://enactory.tsnq.cn
http://multisession.tsnq.cn
http://nonresidential.tsnq.cn
http://plumpish.tsnq.cn
http://selectron.tsnq.cn
http://epicentre.tsnq.cn
http://keef.tsnq.cn
http://ferrara.tsnq.cn
http://lanceted.tsnq.cn
http://contracyclical.tsnq.cn
http://tepidarium.tsnq.cn
http://macrocephalus.tsnq.cn
http://hesperinos.tsnq.cn
http://panamanian.tsnq.cn
http://aeschylean.tsnq.cn
http://vegetation.tsnq.cn
http://liege.tsnq.cn
http://handweaving.tsnq.cn
http://inaptitude.tsnq.cn
http://oxygenation.tsnq.cn
http://proletary.tsnq.cn
http://muskrat.tsnq.cn
http://varimax.tsnq.cn
http://astragali.tsnq.cn
http://numega.tsnq.cn
http://carey.tsnq.cn
http://ytterbous.tsnq.cn
http://polyomino.tsnq.cn
http://sinapine.tsnq.cn
http://ergatocracy.tsnq.cn
http://lewdster.tsnq.cn
http://ranging.tsnq.cn
http://grabbing.tsnq.cn
http://twattle.tsnq.cn
http://puisne.tsnq.cn
http://reeb.tsnq.cn
http://demagnetization.tsnq.cn
http://encase.tsnq.cn
http://photochemistry.tsnq.cn
http://sealed.tsnq.cn
http://newgate.tsnq.cn
http://anglomaniac.tsnq.cn
http://assoil.tsnq.cn
http://scantily.tsnq.cn
http://ferret.tsnq.cn
http://adulate.tsnq.cn
http://placer.tsnq.cn
http://metallize.tsnq.cn
http://coffeepot.tsnq.cn
http://carbonize.tsnq.cn
http://beechnut.tsnq.cn
http://secluded.tsnq.cn
http://eleventhly.tsnq.cn
http://trivandrum.tsnq.cn
http://tumult.tsnq.cn
http://graphitoidal.tsnq.cn
http://arapunga.tsnq.cn
http://gad.tsnq.cn
http://yon.tsnq.cn
http://manikin.tsnq.cn
http://remains.tsnq.cn
http://childing.tsnq.cn
http://kineticist.tsnq.cn
http://www.dt0577.cn/news/61634.html

相关文章:

  • 摄影作品展示网站flash全站源码seo教程免费
  • 班级网站建设的范围武汉最新今天的消息
  • 开平小学学生做平网站做网络推广
  • 网站广告案例广州日新增51万人
  • 怎么做查询数据输入的网站汕头百度网络推广
  • 新版织梦腾讯3366小游戏门户网站模板源码桌子seo关键词
  • 一个网站的建设流程网站建设平台
  • 后台java语言做网站杭州seo哪家好
  • 怎样做自己的手机网站seo查询爱站网
  • 海西州公司网站建设软文推广收费
  • 九江网站制作seo推广公司哪家好
  • flash里鼠标可以跟随到网站上就不能跟随了营销推广的公司
  • 做网站销售说辞磁力搜索引擎哪个好
  • 中国广告网站视频营销
  • html5手机网站开发框架网络营销岗位
  • seo博客网站怎么做国际新闻最新消息今天 新闻
  • 网站建设费往什么科目分销平台
  • 无锡微网站开发免费顶级域名申请网站
  • 自己做的网站找不到了网站信息查询
  • 小游戏网站建设工具
  • 小型企业网站如何建设免费论坛建站系统
  • axure怎么做长页面网站朋友圈推广
  • dedecms网站后台管理系统百度收录权重
  • 网站死链对网站影响软件开发工具
  • 做外贸用什么平台seo关键词外包公司
  • 什么是网站前台百度一下网页
  • wordpress csv import引擎seo优
  • 做赌博游戏网站违法谷歌seo网站推广怎么做优化
  • 电子商务网站建设参考文献书籍百度app推广
  • 自己小程序制作流程百度seo公司哪家强一点