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

北京黑马计算机培训机构seo网络优化师招聘

北京黑马计算机培训机构,seo网络优化师招聘,嵌入式软件开发做什么,婚纱照网站设计模式23种 创建型抽象工厂模式工厂模式生成器模式原型模式单例模式 结构型适配器模式桥接模式组合模式装饰模式外观模式享元模式代理模式 行为型责任链模式命令模式解释器模式迭代器模式中介者模式备忘录模式观察者模式状态模式策略模式模版方法模式访问者模式 创建型 与对…

设计模式23种

  • 创建型
    • 抽象工厂模式
    • 工厂模式
    • 生成器模式
    • 原型模式
    • 单例模式
  • 结构型
    • 适配器模式
    • 桥接模式
    • 组合模式
    • 装饰模式
    • 外观模式
    • 享元模式
    • 代理模式
  • 行为型
    • 责任链模式
    • 命令模式
    • 解释器模式
    • 迭代器模式
    • 中介者模式
    • 备忘录模式
    • 观察者模式
    • 状态模式
    • 策略模式
    • 模版方法模式
    • 访问者模式

创建型

与对象的创建有关

抽象工厂模式

提供一个创建一系列相关或相互依赖的对象的接口

//来1张1费卡  1张2费卡 一系列相关
class Card {
public:virtual void out() = 0;
};
//还可以定义更多的卡牌
class CardCost1:public Card {
public:virtual void out() {cout << "我是1费卡" << endl;}
};class CardCost2 :public Card {
public:virtual void out() {cout << "我是2费卡" << endl;}
};class Factory {
public:virtual Card* CreateCost1() = 0;virtual Card* CreateCost2() = 0;
};
//还可以定义更多的工厂来组合
class CardFactory:public Factory {
public:Card* CreateCost1() {//来一张1费卡return new CardCost1();}Card* CreateCost2() {//来一张2费卡return new CardCost2();}
};
class CardFamaly
int main() {CardFactory *fac = new CardFactory();Card* cost1 = fac->CreateCost1();Card* cost2 = fac->CreateCost2();cost1->out();cost2->out();delete cost1;delete cost2;delete fac;return 0;
}

工厂模式

定义一个用于创建对象的接口,让子类决定实例化哪个类
//和抽象工厂区别是 1个和多个?

class Card {
public:virtual void out() = 0;
};class CardCost1:public Card {
public:virtual void out() {cout << "我是1费卡" << endl;}
};class CardCost2 :public Card {
public:virtual void out() {cout << "我是2费卡" << endl;}
};
class Factory {
public:virtual Card* Create() = 0;
};class CardCost1Factory:public Factory {
public:Card* Create() {return new CardCost1();}
};class CardCost2Factory :public Factory {
public:Card* Create() {return new CardCost2();}
};
int main() {CardCost1Factory* fac1 = new CardCost1Factory();CardCost2Factory* fac2 = new CardCost2Factory();Card* cost1 = fac1->Create();Card* cost2 = fac2->Create();cost1->out();cost2->out();delete cost1;delete cost2;delete fac1;delete fac2;return 0;
}

生成器模式

在某些情况下,一个对象的创建过程非常复杂,涉及多个步骤,每个步骤都可能有不同的实现方式。如果将所有创建逻辑放在一个类中,会导致该类变得庞大且难以维护。此外,如果需要创建不同的变体对象,就需要在该类中添加更多的逻辑,使得代码变得混乱。

原型模式

克隆

单例模式

就是单例

结构型

适配器模式

将一个类的接口转变为另外一个希望的接口

template<typename Type>
void permutation(Type first, int len) {int val = 1;for (int i = 0; i < len; i++) {*first = val;val++;first++;}
}int main() {vector<int> a;//本来vector 不能用 = int 赋值 ++//把vector =>back_insert_iterator(重载++ = ) 调用vector push_backpermutation(back_inserter(a), 10);int b[20];permutation(b, 10);return 0;
}

桥接模式

将抽象部分和其实现部分分离,使它们都可以独立的变化

//羁绊
class Jiban {
public:virtual void out() = 0;
};class Family :public Jiban {
public:virtual void out() {cout << " 家人 " << endl;}
};class ZhenMan :public Jiban {
public:virtual void out() {cout << " 铁血屈服者 " << endl;}
};
//英雄
class Hero {
public:virtual void out() = 0;virtual void SetJiban(Jiban* jb) = 0;Jiban* m_jb = nullptr;
};class BaoBao:public Hero {
public:virtual void out() {cout << " 爆爆 ";m_jb->out();}virtual void SetJiban(Jiban* jb) {m_jb = jb;}};class JieSi :public Hero {
public:virtual void out() {cout << " 杰斯 ";m_jb->out();}virtual void SetJiban(Jiban* jb) {m_jb = jb;}
};int main() {Family* family = new Family;ZhenMan* zm = new ZhenMan;JieSi* js = new JieSi();BaoBao* bb = new BaoBao();js->SetJiban(zm);bb->SetJiban(family);js->out();bb->out();return 0;}

组合模式

将对象组合成树型结构以表示整体与部分的层次结构
文件系统

装饰模式

动态的给一个对象添加一些额外的职责

class Water {
public:virtual int cost() = 0;virtual void out() = 0;
};class Wahaha :public Water {
public:virtual int cost() {return 2;}virtual void out() {cout << "娃哈哈";}
};class WaterDecorator :public Water {
public:WaterDecorator(Water* self) {m_self = self;}virtual int cost() {return m_self->cost();}virtual void out() {m_self->out();}Water* m_self;
};
//加冰
class IceDecorator :public WaterDecorator {
public:IceDecorator(Water* self) :WaterDecorator(self) {}virtual int cost() {return 1 + m_self->cost();}virtual void out() {m_self->out();cout << " 加冰 ";}
};
//加糖
class SugarDecorator :public WaterDecorator {
public:SugarDecorator(Water* self) :WaterDecorator(self) {}virtual int cost() {return 1 + m_self->cost();}virtual void out() {m_self->out();cout << " 加糖 ";}
};int main() {Wahaha* whh = new Wahaha();{IceDecorator* d = new IceDecorator(whh);SugarDecorator* d2 = new SugarDecorator(d);d2->out();cout << d2->cost() << endl;}return 0;
}

外观模式

为子系统中一组接口提供一个一致的界面

class Computer {
public:void turnOn() {cout << " 开电脑 ";}void turnOff() {cout << " 关电脑 ";}
};
class Light {
public:void turnOn() {cout << " 开灯 ";}void turnOff() {cout << " 关灯 ";}
};class MyLife {Computer computer;Light light;
public:void play() {computer.turnOn();light.turnOn();cout << endl;}void sleep() {computer.turnOff();light.turnOff();cout << endl;}
};int main() {MyLife* mf = new MyLife;mf->play();mf->sleep();return 0;
}

享元模式

运用共享技术有效的支持大量细粒度的对象

struct Base {
public:string name;int gongji;//攻击int fangyu;//防御
};class BaoBao{
public:BaoBao(Base *base) {m_base = base;x = y = 0;}Base* m_base;int x, y;//坐标
};class BaoBaoFactory {public:BaoBao* GetHero() {Base* base = nullptr;if (mmp.count("爆爆"))base = mmp["爆爆"];else {base = new Base;base->name = "爆爆";base->gongji = 999;base->fangyu = 999;mmp[base->name] = base;}return new BaoBao(base);}unordered_map<string, Base *> mmp;
};int main() {BaoBaoFactory* fac = new BaoBaoFactory();vector<BaoBao* > all;for (int i = 0; i < 100; i++) {all.push_back(fac->GetHero());}return 0;
}

代理模式

行为型

责任链模式

命令模式

解释器模式

迭代器模式

中介者模式

备忘录模式

观察者模式

状态模式

策略模式

模版方法模式

访问者模式

http://www.dtcms.com/wzjs/42929.html

相关文章:

  • 做外语网站的公司市场宣传推广方案
  • 十堰网站开发百度关键词怎么刷上去
  • 做网站的开发环境北京百度推广代理
  • 昆明云南微网站搭建高端网站优化公司
  • 免费wordpress cms主题百度搜索seo
  • 企业网站开发丨薇怎么优化标题和关键词排名
  • 六安品牌网站建设电话搜狗网
  • 网站一般用什么做的cpa广告联盟平台
  • 自己做网站怎么样衡水seo排名
  • 优秀网站h5案例分享小程序引流推广平台
  • 东营市公司网站建设价格个人网站制作模板
  • 做网站的相关协议宜昌今日头条新闻
  • ae如何做视频模板下载网站seo外链优化培训
  • 手机网站开发教程视频关键词调整排名软件
  • 山西网站群建设线上营销的方式
  • 上市公司中 哪家网站做的好手机优化
  • 清远企业网站建设公司今日小说排行榜百度搜索风云榜
  • 网站毕业论文模板seo词库排行
  • 网站开发技术 下载广告推广渠道有哪些
  • 旅游网站建设模板sem竞价教程
  • 天津关键词宁波百度快照优化排名
  • 开封旅游网站建设网页推广广告代发平台
  • 国外扁平化网站设计欣赏百度法务部联系方式
  • 学生如何自己做网站星巴克seo网络推广
  • 长沙商城网站建设中国职业培训在线
  • 广州旅游网站建设设计如何推广平台
  • 网络工程培训网络班北京aso优化
  • 山东做网站的公司各种资源都有的搜索引擎
  • 最好的网站设计公司美国最新新闻头条
  • 怎样做优惠券网站百度快照是什么意思?