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

浙江建设干部学校网站seo研究中心教程

浙江建设干部学校网站,seo研究中心教程,做公众号试卷的网站,日本做的比较好的陶瓷网站与工厂模式对比 工厂模式 工厂模式是类创建模式。在工厂模式中,只需要生产同一种产品,只不过是生产厂家不同。 所以产品类的设计: 抽象的产品类Product具体的产品类Product_A,Product_B, Product_C, Product_D…… 工厂的设计…

与工厂模式对比

工厂模式

工厂模式是类创建模式。在工厂模式中,只需要生产同一种产品,只不过是生产厂家不同。

所以产品类的设计:

  • 抽象的产品类Product
  • 具体的产品类Product_AProduct_B, Product_C, Product_D……

工厂的设计:

  • 抽象的工厂Factory
  • 与产品对应的Factory_A, Factory_B, Factory_C, Factory_D……

特点是每增加一个厂家,就会成对地增加类。
不考虑增加产品种类,否则就会升级为抽象工厂模式。

抽象工厂模式

抽象工厂模式是对象创建模式。抽象工厂模式中,每个厂家都生产多种产品

反映到我们的工厂类,就是需要提供更多的产品制造接口。

优点

每增加一个厂家,就要有一个具体的工厂类产生、多个具体的产品类产生。
只需让具体的工厂继承Factory抽象的工厂、具体的产品继承抽象的产品、具体的工厂负责制造具体的产品。对其他类没有影响。

缺点/限制

当增加一种新的产品时(不推荐),每个已有的工厂都需要增加新的方法,来制造对应的产品,违背了开闭原则。

产品已有的种类是固定的,而品阶/等级/厂商可以变。

有时这也算是个优点,因为将每个工厂的产品视为一套产品,这很符合一些应用场合。
例如对不同的操作系统提供一套UI组件,对不同操作系统使用不同的具体工厂来产生一套组件。

又比如在数据相关类的设计中,有不同的数据库,不同的数据库会给出不同的连接类、语句类。数据库就像具体的工厂,连接类、语句类则是产品。不同的数据库自成一套。

类图

下面的例子模拟不同的文具工厂生产各种文具,
假设厂家有:爱好,晨光……
假设文具有:书、铅笔、尺子……

在这里插入图片描述

代码

#include <iostream>
#include <memory>
#include <vector>using namespace std;class Book;
class AiHaoBook;
class ChenGuangBook;class Pencil;
class AiHaoPencil;
class ChenGuangPencil;class Ruler;
class AiHaoRuler;
class ChenGuangRuler;class Factory;
class ChenGuangFactory;
class AiHaoFactory;class Factory {
public:virtual ~Factory() = default;virtual unique_ptr<Book> make_book() = 0;virtual unique_ptr<Pencil> make_pencil() = 0;virtual unique_ptr<Ruler> make_ruler() = 0;
};class AiHaoFactory : public Factory {
public:unique_ptr<Book> make_book() override;unique_ptr<Pencil> make_pencil() override;unique_ptr<Ruler> make_ruler() override;
};class ChenGuangFactory : public Factory {
public:unique_ptr<Book> make_book() override;unique_ptr<Pencil> make_pencil() override;unique_ptr<Ruler> make_ruler() override;
};class Book {
public:virtual ~Book() = default;virtual string get_brand() const = 0;string get_type() const;
private:static const string type;
};class Pencil {
public:virtual ~Pencil() = default;virtual string get_brand() const = 0;string get_type() const;
private:static const string type;
};class Ruler {
public:virtual ~Ruler() = default;virtual string get_brand() const = 0;string get_type() const;
private:static const string type;
};const string Book::type ("Book");
const string Pencil::type ("Pencil");
const string Ruler::type ("Ruler");string
Book::get_type() const
{return Book::type;
}string
Pencil::get_type() const
{return Pencil::type;
}string
Ruler::get_type() const
{return Ruler::type;
}class AiHaoBook: public Book {
public:string get_brand() const override;
private:static const string brand;
};class AiHaoPencil : public Pencil {
public:string get_brand() const override;
private:static const string brand;
};class AiHaoRuler : public Ruler {
public:string get_brand() const override;
private:static const string brand;
};class ChenGuangBook: public Book {
public:string get_brand() const override;
private:static const string brand;
};class ChenGuangPencil : public Pencil {
public:string get_brand() const override;
private:static const string brand;
};class ChenGuangRuler : public Ruler {
public:string get_brand() const override;
private:static const string brand;
};const string AiHaoBook::brand ("AiHao");
const string AiHaoPencil::brand ("AiHao");
const string AiHaoRuler::brand ("AiHao");const string ChenGuangBook::brand ("ChenGuang");
const string ChenGuangPencil::brand ("ChenGuang");
const string ChenGuangRuler::brand ("ChenGuang");
string
AiHaoBook::get_brand() const
{return AiHaoBook::brand;
}string
AiHaoPencil::get_brand() const
{return AiHaoPencil::brand;
}string
AiHaoRuler::get_brand() const
{return AiHaoRuler::brand;
}string
ChenGuangBook::get_brand() const
{return ChenGuangBook::brand;
}string
ChenGuangPencil::get_brand() const
{return ChenGuangPencil::brand;
}string
ChenGuangRuler::get_brand() const
{return ChenGuangRuler::brand;
}unique_ptr<Book>
AiHaoFactory::make_book()
{return make_unique<AiHaoBook>();
}unique_ptr<Pencil>
AiHaoFactory::make_pencil()
{return make_unique<AiHaoPencil>();
}unique_ptr<Ruler>
AiHaoFactory::make_ruler()
{return make_unique<AiHaoRuler>();
}unique_ptr<Book>
ChenGuangFactory::make_book()
{return make_unique<ChenGuangBook>();
}unique_ptr<Pencil>
ChenGuangFactory::make_pencil()
{return make_unique<ChenGuangPencil>();
}unique_ptr<Ruler>
ChenGuangFactory::make_ruler()
{return make_unique<ChenGuangRuler>();
}int
main (void)
{vector<unique_ptr<Factory>> makers;makers.emplace_back (make_unique<AiHaoFactory>());makers.emplace_back (make_unique<ChenGuangFactory>());for (auto &maker : makers) {unique_ptr<Book> book = maker->make_book();unique_ptr<Pencil> pencil = maker->make_pencil();unique_ptr<Ruler> ruler = maker->make_ruler();cout << book->get_brand() << " " << book->get_type() << endl;cout << pencil->get_brand() << " " << pencil->get_type() << endl;cout << ruler->get_brand() << " " << ruler->get_type() << endl;}
}

plantuml

@startuml/' Objects '/class AiHaoBook {+get_brand() : string---brand : static const string
}class AiHaoFactory {+make_book() : unique_ptr<Book>+make_pencil() : unique_ptr<Pencil>+make_ruler() : unique_ptr<Ruler>
}class AiHaoPencil {+get_brand() : string---brand : static const string
}class AiHaoRuler {-brand : static const string+get_brand() : string
}abstract class Book {+{abstract}~Book()+virtual get_brand() : string+get_type() : string---type : static const string
}class ChenGuangBook {+get_brand() : string---brand : static const string
}class ChenGuangFactory {+make_book() : unique_ptr<Book>+make_pencil() : unique_ptr<Pencil>+make_ruler() : unique_ptr<Ruler>
}class ChenGuangPencil {+get_brand() : string---brand : static const string
}class ChenGuangRuler {+get_brand() : string---brand : static const string
}abstract class Factory {+{abstract}~Factory()+virtual make_book() : unique_ptr<Book>+virtual make_pencil() : unique_ptr<Pencil>+virtual make_ruler() : unique_ptr<Ruler>
}abstract class Pencil {+{abstract}~Pencil()+virtual get_brand() : string+get_type() : string---type : static const string
}abstract class Ruler {+{abstract}~Ruler()+virtual get_brand() : string+get_type() : string---type : static const string
}/' Inheritance relationships '/Book <|----- AiHaoBookBook <|----- ChenGuangBookFactory <|-- AiHaoFactoryFactory <|-- ChenGuangFactoryPencil <|----- AiHaoPencilPencil <|----- ChenGuangPencilRuler <|----- AiHaoRulerRuler <|----- ChenGuangRuler.ChenGuangFactory .....> .ChenGuangBook.ChenGuangFactory .....> .ChenGuangPencil.ChenGuangFactory .....> .ChenGuangRuler.AiHaoFactory .....> .AiHaoBook
.AiHaoFactory .....> .AiHaoPencil
.AiHaoFactory .....> .AiHaoRuler/' Aggregation relationships '//' Nested objects '/@enduml

文章转载自:
http://dinncosquirely.tqpr.cn
http://dinncotrait.tqpr.cn
http://dinncoperlite.tqpr.cn
http://dinncovassalage.tqpr.cn
http://dinncogymkana.tqpr.cn
http://dinncoplover.tqpr.cn
http://dinnconunciature.tqpr.cn
http://dinncoespanol.tqpr.cn
http://dinncohelve.tqpr.cn
http://dinncourbanise.tqpr.cn
http://dinncoabettal.tqpr.cn
http://dinncoaccompanying.tqpr.cn
http://dinncoputtoo.tqpr.cn
http://dinncotwig.tqpr.cn
http://dinncooverpassed.tqpr.cn
http://dinncomonoecious.tqpr.cn
http://dinncoozonometer.tqpr.cn
http://dinncohypersensitive.tqpr.cn
http://dinncoobservational.tqpr.cn
http://dinncoheil.tqpr.cn
http://dinncoantisepsis.tqpr.cn
http://dinncochronon.tqpr.cn
http://dinncomoabite.tqpr.cn
http://dinncovastitude.tqpr.cn
http://dinncocircumterrestrial.tqpr.cn
http://dinncoberme.tqpr.cn
http://dinncoreindoctrinate.tqpr.cn
http://dinncoheel.tqpr.cn
http://dinncostackware.tqpr.cn
http://dinncoapfelstrudel.tqpr.cn
http://dinncotheodicy.tqpr.cn
http://dinncointerfascicular.tqpr.cn
http://dinnconomadise.tqpr.cn
http://dinncoceremony.tqpr.cn
http://dinncolamehter.tqpr.cn
http://dinncodiscontent.tqpr.cn
http://dinncoallopatrically.tqpr.cn
http://dinncovisitator.tqpr.cn
http://dinncoovariectomy.tqpr.cn
http://dinncosaliferous.tqpr.cn
http://dinncobackbreaker.tqpr.cn
http://dinncooxotremorine.tqpr.cn
http://dinncodapper.tqpr.cn
http://dinncogarmenture.tqpr.cn
http://dinncoclosed.tqpr.cn
http://dinncoparanoiac.tqpr.cn
http://dinncoeuphuism.tqpr.cn
http://dinncodimout.tqpr.cn
http://dinncocolocynth.tqpr.cn
http://dinncoconstrual.tqpr.cn
http://dinncocontemn.tqpr.cn
http://dinncobetweenwhiles.tqpr.cn
http://dinncocraped.tqpr.cn
http://dinncobacklight.tqpr.cn
http://dinncorefertilize.tqpr.cn
http://dinncohymnal.tqpr.cn
http://dinncoseverance.tqpr.cn
http://dinncomicella.tqpr.cn
http://dinncolythe.tqpr.cn
http://dinncosunday.tqpr.cn
http://dinncodeclension.tqpr.cn
http://dinncotaurocholic.tqpr.cn
http://dinncocomminate.tqpr.cn
http://dinncoretiarius.tqpr.cn
http://dinncomoorstone.tqpr.cn
http://dinncocosec.tqpr.cn
http://dinncoamortizement.tqpr.cn
http://dinncocorequisite.tqpr.cn
http://dinncodiehard.tqpr.cn
http://dinncowhangdoodle.tqpr.cn
http://dinncohealthiness.tqpr.cn
http://dinncocounterdrug.tqpr.cn
http://dinncoupwind.tqpr.cn
http://dinncodimmish.tqpr.cn
http://dinncodahlak.tqpr.cn
http://dinncoganglike.tqpr.cn
http://dinncodecolonization.tqpr.cn
http://dinncoroomily.tqpr.cn
http://dinncoanchorite.tqpr.cn
http://dinncocloistered.tqpr.cn
http://dinncoentrenous.tqpr.cn
http://dinncofub.tqpr.cn
http://dinncospewy.tqpr.cn
http://dinnconazim.tqpr.cn
http://dinncojewellery.tqpr.cn
http://dinncoextractible.tqpr.cn
http://dinncoestoppage.tqpr.cn
http://dinncoredroot.tqpr.cn
http://dinncoadunc.tqpr.cn
http://dinncocollagenase.tqpr.cn
http://dinncovictualer.tqpr.cn
http://dinncoannelid.tqpr.cn
http://dinncorance.tqpr.cn
http://dinncofenderboard.tqpr.cn
http://dinncoallegretto.tqpr.cn
http://dinncocalcutta.tqpr.cn
http://dinncocacodyl.tqpr.cn
http://dinncotheocracy.tqpr.cn
http://dinncobegotten.tqpr.cn
http://dinncoexegete.tqpr.cn
http://www.dinnco.com/news/155171.html

相关文章:

  • 广东网站建设方便电商培训心得
  • 注册安全工程师证书seo的收费标准
  • 外省公司做网站备案hao123网址大全浏览器设为主页
  • 钓鱼网站制作建设公司网站大概需要多少钱?
  • 旅游网站制作百度云亚马逊排名seo
  • 河北网站制作软文广告的案例
  • 济南网站建设和维护培训机构加盟店排行榜
  • 嘉兴优化公司北京网站优化经理
  • 平度做网站全网营销代理加盟
  • 网站建设一年多少恰百度移动端关键词优化
  • h5技术网站微商怎么引流被别人加
  • 长春火车站官网网页友情链接
  • 网站建设专业可行性分析各大网站收录提交入口
  • 网站大图怎么优化重庆公司网站seo
  • 做网站赚钱平台百度知道怎么赚钱
  • 嘉兴网站制作平台新闻摘抄四年级下册
  • 网站建设前台后台教程今日武汉最新消息
  • 美女教师做爰网站重庆seo排
  • 网站建设的仿站上海网络推广培训学校
  • 1688网站一起做网店国内网站排名
  • 网站各种按钮代码如何搭建网站平台
  • 部门网站的开发 意义百度的seo排名怎么刷
  • 企业做网站属于广告宣传费吗泰安网站优化公司
  • 什么网站上做指甲最便宜永久免费的建站系统有哪些
  • 网站文章删除了怎么做404sem代运营公司
  • 犀牛云做网站怎么这么贵网络软文怎么写
  • 站酷网官网登录关键词查找
  • 九江网站建设推广南京百度seo排名
  • 桓台网站推广东莞网站推广方案
  • 专业微网站建设如何分步骤开展seo工作