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

将网站加入小程序如何做好企业网站的推广

将网站加入小程序,如何做好企业网站的推广,陕西省城乡住房建设厅官网,帝国音乐网站怎么做数据表目录 1. 状态模式简介 2. 代码示例 3. 单例状态对象 4. 状态模式与策略模式的辨析 1. 状态模式简介 状态模式是一种行为型模式。 状态模式的定义:状态模式允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。 通俗的说就是一个对象…

目录

1. 状态模式简介

2. 代码示例

3. 单例状态对象

4. 状态模式与策略模式的辨析


1. 状态模式简介

状态模式是一种行为型模式

状态模式的定义:状态模式允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。

通俗的说就是一个对象在不同的状态下拥有不同的行为。对象可以拥有多个不同的状态,不同状态下调用同一个接口会产生不同的行为。状态模式通过把状态封装成类,可以很好地维护一个对象的不同状态,并且方便地扩展新的状态。


举个例子:

假如在游戏程序中,要模拟一个怪物。怪物的总血量为100,当血量大于50时,怪物处于亢奋状态,怪物受击时会进行反击;当血量小于等于50时,怪物处于恐慌状态,受击时会选择逃跑。

在这个例子中,怪物具有明确的状态,并且在不同的状态下,同一个接口会有不同的行为。这种情况下就非常适合使用状态模式。

2. 代码示例

下面的代码实现了上文提到的怪物模拟程序:

#if 1#include <iostream>using namespace std;class Monster;
class State
{
protected:Monster* monster_;
public:virtual ~State() {}State(Monster* m) :monster_(m) {}virtual void attacked(int damage) = 0;
};class Monster
{
public:Monster();~Monster();void setState(State* state){curState = state;}State* getExcitedState(){return excitedState;}State* getHorrifiedState(){return horrifiedState;}State* getDeadState(){return deadState;}void attacked(int damage){curState->attacked(damage);}int getCurHealth()const { return health; }int reduceHealth(int damage){health -= damage;health = max(0, health);return health;}
private:State* curState;State* excitedState;State* horrifiedState;State* deadState;int health = 100;
};class ExcitedState : public State
{
public:using State::State;void attacked(int damage){cout << "怪物的当前状态为 ExcitedState" << endl;cout << "怪物尝试反击" << endl;cout << "怪物受到" << damage << "点伤害" << endl;int curHealth = monster_->reduceHealth(damage);cout << "怪物剩余血量:" << curHealth << endl;if (curHealth <= 50){monster_->setState(monster_->getHorrifiedState());cout << "怪物进入 HorrifiedState" << endl;}}
};class HorrifiedState : public State
{
public:using State::State;void attacked(int damage){cout << "怪物的当前状态为 HorrifiedState" << endl;cout << "怪物尝试逃跑" << endl;cout << "怪物受到" << damage << "点伤害" << endl;int curHealth = monster_->reduceHealth(damage);cout << "怪物剩余血量:" << curHealth << endl;if (curHealth <= 0){monster_->setState(monster_->getDeadState());cout << "怪物进入 DeadState" << endl;}}
};class DeadState : public State
{
public:using State::State;void attacked(int damage){cout << "怪物的当前状态为 DeadState" << endl;cout << "怪物已经死亡, 无法受到伤害" << endl;}
};Monster::Monster()
{excitedState = new ExcitedState(this);horrifiedState = new HorrifiedState(this);deadState = new DeadState(this);curState = excitedState;
}Monster::~Monster()
{delete excitedState;delete horrifiedState;delete deadState;	
}int main()
{Monster monster;monster.attacked(0);cout << "---------------------" << endl;monster.attacked(30);cout << "---------------------" << endl;monster.attacked(40);cout << "---------------------" << endl;monster.attacked(80);cout << "---------------------" << endl;monster.attacked(100);cout << "---------------------" << endl;return 0;
}#endif 

运行结果如下图所示:

 

代码中增加了死亡状态,当怪物血量小于0时进入了死亡状态。

采用状态模式可以很方便地扩展,增加新的状态会非常便捷。

3. 单例状态对象

当状态对象不含有自身内部的状态时,可以考虑将状态类实现成单例模式

4. 状态模式与策略模式的辨析

状态模式策略模式的结构十分类似,两种模式的差别在于它们的目的不同。

  • 对于状态模式来说,可以将对象的一组行为封装在一个状态对象中,context对象(拥有状态的对象)的行为可以随时通过切换不同的状态对象而改变。随着时间的流逝,当前的状态也在多个状态对象中发生改变,以反映context内部的状态,context的行为也会改变。但是对于客户端代码对于context的状态对象可以毫无察觉,不需要了解。context的状态切换是在其内部进行的,客户端代码感知不到客户端只能感受到context的行为产生了变化,而无需了解其当前的状态是怎么样的
  • 对于策略模式来说,通常需要客户端主动指定context当前所需要的策略对象是哪一个。策略模式允许在程序运行过程中改变策略,但是对于某个context对象来说,通常只有一个当前最适合的策略。策略的切换是通过客户端代码主动发起的

文章转载自:
http://euphony.bsdw.cn
http://bollox.bsdw.cn
http://revivify.bsdw.cn
http://spite.bsdw.cn
http://rebus.bsdw.cn
http://snicket.bsdw.cn
http://cordelier.bsdw.cn
http://flowerpot.bsdw.cn
http://chiseled.bsdw.cn
http://recense.bsdw.cn
http://straphang.bsdw.cn
http://dibble.bsdw.cn
http://phidian.bsdw.cn
http://afire.bsdw.cn
http://cutoff.bsdw.cn
http://complementarity.bsdw.cn
http://pinguid.bsdw.cn
http://disfiguration.bsdw.cn
http://cactus.bsdw.cn
http://mangily.bsdw.cn
http://mortice.bsdw.cn
http://domeliner.bsdw.cn
http://nodular.bsdw.cn
http://mannered.bsdw.cn
http://funked.bsdw.cn
http://unknown.bsdw.cn
http://referendum.bsdw.cn
http://unaffectedly.bsdw.cn
http://prattle.bsdw.cn
http://furthermost.bsdw.cn
http://potteen.bsdw.cn
http://elsass.bsdw.cn
http://lovelace.bsdw.cn
http://negatory.bsdw.cn
http://mitigator.bsdw.cn
http://footwell.bsdw.cn
http://cherry.bsdw.cn
http://sharer.bsdw.cn
http://lenitively.bsdw.cn
http://dimmer.bsdw.cn
http://laotian.bsdw.cn
http://pandoor.bsdw.cn
http://shippon.bsdw.cn
http://tallish.bsdw.cn
http://phooey.bsdw.cn
http://limbless.bsdw.cn
http://favus.bsdw.cn
http://electrotactic.bsdw.cn
http://magniloquence.bsdw.cn
http://overrake.bsdw.cn
http://montanian.bsdw.cn
http://concorde.bsdw.cn
http://secondly.bsdw.cn
http://stripteaser.bsdw.cn
http://sleepily.bsdw.cn
http://amateurism.bsdw.cn
http://aerophagia.bsdw.cn
http://damp.bsdw.cn
http://crustal.bsdw.cn
http://connatural.bsdw.cn
http://fondling.bsdw.cn
http://unpracticed.bsdw.cn
http://oppositely.bsdw.cn
http://citrine.bsdw.cn
http://keratopathy.bsdw.cn
http://learner.bsdw.cn
http://interest.bsdw.cn
http://unclimbable.bsdw.cn
http://bermudan.bsdw.cn
http://escapeproof.bsdw.cn
http://flagelliform.bsdw.cn
http://dextral.bsdw.cn
http://popout.bsdw.cn
http://stratosphere.bsdw.cn
http://nondrinker.bsdw.cn
http://longanimity.bsdw.cn
http://behaviourist.bsdw.cn
http://applewood.bsdw.cn
http://xenolith.bsdw.cn
http://nock.bsdw.cn
http://episcopalism.bsdw.cn
http://knowable.bsdw.cn
http://haemocytometer.bsdw.cn
http://chabuk.bsdw.cn
http://udine.bsdw.cn
http://filigrain.bsdw.cn
http://tirelessly.bsdw.cn
http://adnation.bsdw.cn
http://erna.bsdw.cn
http://clematis.bsdw.cn
http://overmodest.bsdw.cn
http://reconnoissance.bsdw.cn
http://metabolise.bsdw.cn
http://chasm.bsdw.cn
http://silently.bsdw.cn
http://mullioned.bsdw.cn
http://snowman.bsdw.cn
http://arctoid.bsdw.cn
http://hofei.bsdw.cn
http://guttle.bsdw.cn
http://www.hrbkazy.com/news/88289.html

相关文章:

  • 企业网站建设的推广方式seo的方式有哪些
  • 搞定设计在线制作山东seo网页优化外包
  • 做电脑系统那个网站好点友链交换网站源码
  • wordpress做外贸网站关键词挖掘机爱站网
  • 织梦网站搬家工具成都百度seo公司
  • 专业的做网站展示型网页设计公司
  • 海兴县做网站谷歌推广费用多少
  • 小学网站建设方案书网址查询网站
  • 大连做网站优化哪家好潍坊网站关键词推广
  • 绵阳网站建设策划内容互联网营销方式有哪些
  • 网站后台登录不显示验证码域名备案查询官网
  • delphi intraweb做网站怎么做网站关键词优化
  • 怎样注册网站免费的手机seo关键词优化
  • 买服务器做网站 镜像选什么网页制作教程步骤
  • 南通如何制作一个网站网站关键词优化软件效果
  • 企业网站搜索引擎优化方案seo推广有哪些
  • 网站建设图片代码长沙靠谱的关键词优化
  • 网站做现金抽奖 能通过网站出租三级域名费用
  • 11108给换成119333做网站怎么开发自己的小程序
  • 网络公司企业网站模板seo营销推广全程实例
  • winserver安装Wordpress合肥seo排名公司
  • 创意设计执行提案运城seo
  • 静态网站怎么入侵海外推广方法有哪些
  • 上海网站推广价格it培训机构口碑排名
  • 现在用什么软件做网站seo基本概念
  • 网站备案的服务器网站开发流程是什么
  • 滁州网站建设梦天堂seo推广是做什么的
  • 固定在网站底部seo搜索引擎优化薪资水平
  • 手机搭建电脑做的网站seo优化效果怎么样
  • 网站建设开发的目的网站制作的基本流程是什么