zoukankan
html css js c++ java
我也设计模式——17.State
状态模式是把各种状态封装成不同的类。
关于Context类的实现,不太同于Strategy,虽然原理是一样的:
public
class
Context
{
private
State stateA, stateB, state;
public
Context()
{
stateA
=
new
StateA();
stateB
=
new
StateB();
}
public
void
Request(
int
temp)
{
if
(temp
>
0
)
state
=
stateA;
else
state
=
stateB;
state.Handle();
}
}
可以看到,Request()方法是基于简单工厂的。
还有,Context的ctor是基于单件模式的,可以使用注册工厂来简化。
在Client端的调动方式,就这么简单:
Context context
=
new
Context();
context.Request(
20
);
基于委托的状态模式
委托部分:
public
delegate
void
state();
public
class
ContextUseingDelegate
{
public
state myState;
public
void
ContextInterface()
{
myState();
}
}
我们需要在Context类中使用委托,而在Client端不变:
public
class
Context
{
public
void
Request(
int
temp)
{
ContextUseingDelegate cud
=
new
ContextUseingDelegate();
if
(temp
>
0
)
{
StateA sa
=
new
StateA();
cud.myState
+=
new
state(sa.ConcreteStateA);
}
else
cud.myState
+=
new
state(StateB.ConcreteStateB);
cud.ContextInterface();
}
}
查看全文
相关阅读:
共享纸巾更换主板代码分析 共享纸巾主板更换后的对接代码
Python Django Ajax 传递列表数据
Python Django migrate 报错解决办法
Python 创建字典的多种方式
Python 两个list合并成一个字典
Python 正则 re.sub替换
python Django Ajax基础
Python Django 获取表单数据的三种方式
python Django html 模板循环条件
Python Django ORM 字段类型、参数、外键操作
原文地址:https://www.cnblogs.com/Jax/p/913948.html
最新文章
centos6编译安装 php5.6.34,并mod_php方式整合apache
Spark性能优化:资源调优篇(转)
linux下IPTABLES配置详解(转)
log4j的ConversionPattern参数的格式含义
Apache Kafka 0.9消费者客户端
hive加载json数据解决方案
Spark Streaming性能调优
Kafka之sync、async以及oneway
linux中控操作相关
Eclipse与IDEA快捷键对比
热门文章
关于并发
javascript中 for循环的一些写法 for length 以及for in 还有 for of 的区别
网贷黑名单查询接口开发 网贷黑名单信息查询系统开发
根据微信的公众号获取公众号的二维码 根据公众号获得二维码的图片
百度AI开放平台 UNIT平台开发在线客服 借助百度的人工智能如何开发一个在线客服系统
共享图书系统 图书借阅小程序系统开发心得体会 共享图书系统开发
AI人工客服开发 小程序智能客服 智能客服微信小程序 智能客服系统怎么做 如何设计智能客服系统
网贷查询接口开发 网贷黑名单查询 个人网贷黑名单查询
口红游戏 插口红游戏 h5页面开发
抖音同款口红机 微信口红机 在线游戏口红机开发代码 分析
Copyright © 2011-2022 走看看