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();
}
}
查看全文
相关阅读:
简单的javascript抽奖程序
Linux 二层协议架构组织
常用正则表达式总结
很好的矩阵覆盖问题
很好的求幂的题目
不错的题目-n个数连接得到的最大值
netstat命令介绍-要用熟
一次完整的http事务
Apache vs. Nginx
Python学习-生成器
原文地址:https://www.cnblogs.com/Jax/p/913948.html
最新文章
【转】模块编译Android源码方法
【转】patch命令
【转】Linux命令之查看文件占用空间大小-du,df
【转】在Ubuntu下编译Android源码并运行Emulator
【转】使用命令行方式创建和启动android模拟器
神经网络的理解
机器学习/深度学习测试题(二)—— 单层线性神经网络求解异或问题
机器学习/深度学习测试题(二)—— 单层线性神经网络求解异或问题
神经网络的 Delta 学习规则(learning rule)
神经网络的 Delta 学习规则(learning rule)
热门文章
机器学习/深度学习测试题(一) —— 单层感知器的激活函数
机器学习/深度学习测试题(一) —— 单层感知器的激活函数
matlab 神经网络工具箱的实用
Js版游戏打砖块开发过程详细
设计模式6:Composite
编码优化
如何学习php之吐槽
[每日一题] OCP1z0-047 :2013-08-29 NULL............................................................168
SQL Select语句完整的执行顺序
[置顶] 应广大童鞋的要求提供一个封装模块,直接和ADB 服务进程交互
Copyright © 2011-2022 走看看