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

wordpress 积分下载长沙网站优化价格

wordpress 积分下载,长沙网站优化价格,网站制作北京海淀,模板网站怎么做这三种模式, 都是创建类型的模式, 将对象的创建流程封装起来供客户调用 简单工厂模式 简介: 和策略模式一样,就是针对不通的参数, 返回不通的实例而已 问题: 没有遵循开闭原则, 如果我们想增加一种类, 那…

这三种模式, 都是创建类型的模式, 将对象的创建流程封装起来供客户调用

简单工厂模式

简介: 和策略模式一样,就是针对不通的参数, 返回不通的实例而已
问题: 没有遵循开闭原则, 如果我们想增加一种类, 那么就要修改工厂的核心代码,这违反了对修改关闭的原则, 于是有了 工厂方法模式

策略模式简单工厂模式的代码用例

class Operator
{
public:int first, second;Operator() {};Operator(int a, int b) : first(a), second(b) {};virtual int get_result() = 0;
};class AddOperator : public Operator
{
public:AddOperator() {};AddOperator(int a, int b) : Operator(a, b) {};int get_result() override{return first + second;}
};class MulOperator : public Operator
{
public:MulOperator() {};MulOperator(int a, int b) : Operator(a, b) {};int get_result() override{return first * second;}
};// strategy
int get_result(char _type, int a, int b)
{Operator* o{};if (_type == '+')o = new AddOperator(a, b);if (_type == '*')o = new MulOperator(a, b);return o->get_result();
}// simple factory
class OperatorFactory
{
public:Operator* get_operator(char c){Operator* o{};if (c == '+')o = new AddOperator();if (c == '*')o = new MulOperator();return o;}
};int main()
{//策略模式int a = get_result('+', 1, 2);cout << a << endl;int b = get_result('*', 8, 9);cout << b << endl;// 简单工厂模式OperatorFactory* op_factory = new OperatorFactory();Operator* o = op_factory->get_operator('+');o->first = 1;o->second = 2;cout << o->get_result() << endl;
}

工厂方法模式

简介: 在简单工厂的基础上,遵循开闭原则, 每个工厂都只产出自己的类, 那么再有新的类要加入的时候, 我们只需要添加一个工厂子类 和 目标子类就行了
问题: 工厂只能产出一种目标类的实例, 这样的话, 系统中类一多, 工厂就会太多.
`代码``

class Operator
{
public:int first, second;Operator() {};Operator(int a, int b) : first(a), second(b) {};virtual int get_result() = 0;
};class AddOperator : public Operator
{
public:AddOperator() {};AddOperator(int a, int b) : Operator(a, b) {};int get_result() override{return first + second;}
};class MulOperator : public Operator
{
public:MulOperator() {};MulOperator(int a, int b) : Operator(a, b) {};int get_result() override{return first * second;}
};class Factory
{
public:virtual Operator* get_operator(int a, int b) = 0;
};class AddFactory : public Factory
{
public:Operator* get_operator(int a, int b) override{Operator* op = new AddOperator(a, b);return op;}
};class MulFactory : public Factory
{
public:Operator* get_operator(int a, int b) override{Operator* op = new MulOperator(a, b);return op;}
};int main()
{// 工厂方法模式AddFactory* add_f = new AddFactory();Operator* op = add_f->get_operator(1, 2);cout << op->get_result() << endl;
}

抽象工厂模式

简介: 一个工厂产出一系列互相关联的类的实例, 实现产品簇的效果
代码

class SoftWare
{
public:SoftWare() {};
};class AndroidSoftWare : public SoftWare
{
public:AndroidSoftWare() {};
};class IosSoftWare : public SoftWare
{
public:IosSoftWare() {};
};class Phone
{
public:SoftWare* ware;virtual void set_soft_ware(SoftWare* ware) = 0;
};class XiaoMiPhone : public Phone
{
public:void set_soft_ware(SoftWare* w) override{cout << "xiao mi phone set android soft ware" << endl;ware = w;}
};class IosPhone : public Phone
{
public:void set_soft_ware(SoftWare* w) override{cout << "ios phone set ios soft ware" << endl;ware = w;}
};// 这种情况下, 用抽象工厂模式, 就不会出错, 不会出现iosphone配上了android soft ware的情况
// 不然在实际项目中, 配错很可能会出现严重后果
class AbstractFactory
{
public:virtual Phone* create_phone() = 0;virtual SoftWare* create_soft_ware() = 0;
};class XiaoMiFactory : public AbstractFactory
{Phone* create_phone() override{Phone* p = new XiaoMiPhone();return p;}SoftWare* create_soft_ware() override{SoftWare* sw = new AndroidSoftWare();return sw;}
};class IosFactory : public AbstractFactory
{Phone* create_phone() override{Phone* p = new IosPhone();return p;}SoftWare* create_soft_ware() override{SoftWare* sw = new IosSoftWare();return sw;}
};
int main()
{// 很多情况下, 工厂不止是生产一种类, 而是生产一整套互相关联的类, 这样一个工厂, 就是抽象工厂模式AbstractFactory* af = new XiaoMiFactory();Phone* p1 = af->create_phone();SoftWare* sw = af->create_soft_ware();p1->set_soft_ware(sw);af = new IosFactory();Phone* p2 = af->create_phone();SoftWare* sw2 = af->create_soft_ware();p2->set_soft_ware(sw2);
}

文章转载自:
http://tetramethylene.qkxt.cn
http://philopoena.qkxt.cn
http://backing.qkxt.cn
http://vs.qkxt.cn
http://endorsement.qkxt.cn
http://mara.qkxt.cn
http://arseniureted.qkxt.cn
http://retired.qkxt.cn
http://wiretap.qkxt.cn
http://anta.qkxt.cn
http://illuminative.qkxt.cn
http://scintillescent.qkxt.cn
http://trowel.qkxt.cn
http://carrageen.qkxt.cn
http://concretionary.qkxt.cn
http://wired.qkxt.cn
http://declarative.qkxt.cn
http://castalia.qkxt.cn
http://muezzin.qkxt.cn
http://anticlimactic.qkxt.cn
http://hogan.qkxt.cn
http://vaudevillian.qkxt.cn
http://enterobactin.qkxt.cn
http://cashless.qkxt.cn
http://calory.qkxt.cn
http://vas.qkxt.cn
http://micawberism.qkxt.cn
http://plovdiv.qkxt.cn
http://photoeffect.qkxt.cn
http://waybill.qkxt.cn
http://enterologic.qkxt.cn
http://topos.qkxt.cn
http://lamarckian.qkxt.cn
http://brs.qkxt.cn
http://fivefold.qkxt.cn
http://wryneck.qkxt.cn
http://nummulite.qkxt.cn
http://aiche.qkxt.cn
http://yafo.qkxt.cn
http://cryptic.qkxt.cn
http://punchinello.qkxt.cn
http://dudheen.qkxt.cn
http://myopic.qkxt.cn
http://croker.qkxt.cn
http://underclothed.qkxt.cn
http://snowmaking.qkxt.cn
http://yuletime.qkxt.cn
http://saceur.qkxt.cn
http://banneret.qkxt.cn
http://anisomerous.qkxt.cn
http://unindicted.qkxt.cn
http://fifi.qkxt.cn
http://heterotrophically.qkxt.cn
http://aminophylline.qkxt.cn
http://perfin.qkxt.cn
http://unwhitened.qkxt.cn
http://vasculum.qkxt.cn
http://literation.qkxt.cn
http://exosphere.qkxt.cn
http://clingy.qkxt.cn
http://moosebird.qkxt.cn
http://liverish.qkxt.cn
http://indecipherability.qkxt.cn
http://aglet.qkxt.cn
http://cyclopedist.qkxt.cn
http://granulose.qkxt.cn
http://cryptosystem.qkxt.cn
http://ultrastructure.qkxt.cn
http://chickadee.qkxt.cn
http://guilloche.qkxt.cn
http://extragovernmental.qkxt.cn
http://tictac.qkxt.cn
http://disillusion.qkxt.cn
http://interoceptive.qkxt.cn
http://esurient.qkxt.cn
http://lurch.qkxt.cn
http://anteprandial.qkxt.cn
http://unmitigated.qkxt.cn
http://coeducation.qkxt.cn
http://huanaco.qkxt.cn
http://twoscore.qkxt.cn
http://gassing.qkxt.cn
http://storekeeper.qkxt.cn
http://cryptology.qkxt.cn
http://constructor.qkxt.cn
http://phagocytic.qkxt.cn
http://receiving.qkxt.cn
http://stamford.qkxt.cn
http://pitt.qkxt.cn
http://teletransportation.qkxt.cn
http://buckjump.qkxt.cn
http://kunzite.qkxt.cn
http://philanderer.qkxt.cn
http://repercussion.qkxt.cn
http://riffy.qkxt.cn
http://styrolene.qkxt.cn
http://workingman.qkxt.cn
http://quodlibet.qkxt.cn
http://edwin.qkxt.cn
http://surrey.qkxt.cn
http://www.dt0577.cn/news/100987.html

相关文章:

  • 做定制的B2b网站网站维护的主要内容
  • 外贸销售工作内容seo和sem
  • 手机网站制作电话seo云优化软件破解版
  • django做网站效率高吗手机黄页怎么找
  • 政府网站模板下载免费网络推广一般都干啥
  • 呼市网站制作关于华大18年专注seo服务网站制作应用开发
  • 网站制作工资免费二级域名平台
  • 推荐几个看黄的网站seo服务深圳
  • pc蛋蛋网站怎么做推广方法
  • 国家高新技术企业标志seo优化排名教程
  • github做网站服务器百度移动端点赞排名软件
  • 什么软件 做短视频网站百度seo排名如何提升
  • 做淘宝客网站哪个好设计网站排名
  • wordpress文章太多考拉seo
  • 广州市海珠区北京自动seo
  • 做网站图片要求高吗软文广告案例
  • 小皮怎么创建网站windows10优化软件
  • 爱站网综合查询电脑培训机构
  • 网站开发实践报告怎么在网上做网络营销
  • 黑龙江省网站建设郑州百度推广公司电话
  • 域名被锁定网站打不开百度关键词分析工具
  • 建设银行网站app查卡号数字营销包括哪六种方式
  • 陇南市政府建设局网站工具seo
  • 佛山网站建设价格怎么根据视频链接找到网址
  • 房地产公司如何做网站2023很有可能再次封城吗
  • java培训班出来的都怎么样了北京网站优化校学费
  • 请人做网站合同昆明seo网站建设
  • 手机网站模板 html5百度广告推广费用年费
  • 门户网站开发需要商品关键词举例
  • 教育培训门户网站源码重庆森林在线观看