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();
}
}
查看全文
相关阅读:
【美团技术团队文章--学习笔记】之 Java动态追踪技术探究
mq
为啥要读写分离
算法 数据结构
对扩展开放,对修改关闭
redis 事务
准实时数仓设计方案
Scala Puzzlers 系列(一):占位符的使用
【面试题】大数据开发岗位
Hive 分区和分桶
原文地址:https://www.cnblogs.com/Jax/p/913948.html
最新文章
【HNOI2017】礼物
【2013集训胡渊鸣】城市规划
【HZOI2015】帕秋莉的超级多项式
多项式模板&题目整理
【TJOI/HEOI2016】求和
【BZOJ5093】图的价值
重构了下reGeorg,加了些功能
关于反编译pyc的一点技巧
域知识深入学习三:域用户与组账户的管理
域知识深入学习二:建立AD DS域
热门文章
域知识深入学习一:Active Directory 域服务
关于bash这类脚本语言的一点感想
补充了一些甲方安全知识
CVE-2018-10933 LibSSH auth bypass
回顾了下shell 编程的一些细节
Python 并发总结,多线程,多进程,异步IO
JVM
【马蜂窝技术团队文章--学习笔记】 之 领域驱动设计在马蜂窝优惠中心重构中的实践
转载:一个排查oom的实践
【美团点评技术团队文章--学习笔记 之】 领域驱动设计在互联网业务开发中的实践
Copyright © 2011-2022 走看看