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();
}
}
查看全文
相关阅读:
(3)C++复合类型
(2)C++基本类型
(7)js调试
Oracle语句优先级
oracle排序问题
jsp四大对象
postgresql时间加减计算
全角空格,跟汉字一样宽
bzoj1433 [ZJOI2009]假期的宿舍 最大流
BZOJ 1264 AHOI2006 基因匹配Match 动态规划+树状数组
原文地址:https://www.cnblogs.com/Jax/p/913948.html
最新文章
1.4
1.4-动态路由协议OSPF⑥
1.4-动态路由协议OSPF⑤
1.4-动态路由协议OSPF④
C语言产生随机数
共享主存实现进程间通信
信号量应用
信号量实现进程同步
消息队列实现进程间通信
C语言绘制余弦函数图象
热门文章
汇编步骤
汇编语言统计输入中各字符出现的次数
汇编语言编程问题
(10)C++ 使用类
(9)C++ 对象和类
(8)C++ 内存模型与名称空间
(7)C++ 函数2
(6)C++ 函数
(5)C++ 循环和判断
(4)C++ 复合类型-指针
Copyright © 2011-2022 走看看