php、java实现状态模式
来源:互联网 发布:安卓手机上的编程软件 编辑:程序博客网 时间:2024/06/03 21:24
个人理解:根据事物状态的不同,导致其行为的不同,切换状态,相应的行为也会发生变化
类图
php实现
abstract class Status{ protected $context; public function setContext($context) { $this->context = $context; } public abstract function handle1(); public abstract function handle2();}class ConcreateStatus1 extends Status{ public function handle1() { echo 'ConcreateStatus1 handle1'; } public function handle2() { $this->context->setCurrentStatus($this->context->concreteStatus2); $this->context->handle2(); }}class ConcreateStatus2 extends Status{ public function handle1() { $this->context->setCurrentStatus($thisi->context->concreteStatus1); $this->context->handle1(); } public function handle2() { echo 'ConcreateStatus2 handle2'; }}class Context{ public $concreteStatus1; public $concreteStatus2; private $currentStatus; public function setCurrentStatus($status) { $this->currentStatus = $status; $this->currentStatus->setContext($this); } public function __construct() { $this->concreteStatus1 = new ConcreateStatus1(); $this->concreteStatus2 = new ConcreateStatus2(); } public function handle1() { $this->currentStatus->handle1(); } public function handle2() { $this->currentStatus->handle2(); }}$context = new Context();$context->setCurrentStatus(new ConcreateStatus1());$context->handle1();$context->handle2();
java实现
public abstract class Status { protected Context context; public void setContext(Context context){ this.context = context; } public abstract void handle1(); public abstract void handle2();}
public class ConcreteStatus1 extends Status { @Override public void handle1() { System.out.print("1"); } @Override public void handle2() { context.setCurrentStatus(Context.concreteStatus2); context.handle2(); }}
public class ConcreteStatus2 extends Status { @Override public void handle1() { context.setCurrentStatus(Context.concreteStatus1); context.handle2(); } @Override public void handle2() { System.out.print("2"); }}
public class Context { public final static ConcreteStatus1 concreteStatus1 = new ConcreteStatus1(); public final static ConcreteStatus2 concreteStatus2 = new ConcreteStatus2(); public Status currentStatus; public void setCurrentStatus(Status status){ currentStatus = status; currentStatus.setContext(this); } public void handle1(){ currentStatus.handle1(); } public void handle2(){ currentStatus.handle2(); }}
0 0
- php、java实现状态模式
- 状态模式(java实现)
- Java 实现状态(State)模式
- 设计模式---状态模式Java示例实现
- php,java实现代理模式
- php,java实现原型模式
- php,java实现命令模式
- php,java实现适配器模式
- php,java实现组合模式
- php,java实现观察者模式
- php,java实现备忘录模式
- php,java实现访问者模式
- 大话设计模式之状态模式(java版实现)
- 《大话设计模式》java实现之状态模式
- 状态模式简单实现
- LUA实现状态模式
- C++实现状态模式
- 状态模式 C++实现
- 查看lib导出函数
- ionic安装和升级
- springmvc异常处理
- 架构之路:从5000年传统到现代设计
- 激光SLAM导航系列(一)SLAM与导航基本原理
- php、java实现状态模式
- sun.misc.BASE64Encoder找不到jar包的解决方法
- Linux下root权限下安装软件,运行./configure提示权限不够,解决方法
- 深入理解java虚拟机-内存分配与回收策略
- Windows7 Telnet Connection refused
- 左耳朵耗子:拖累开发团队效率的困局与解决之道
- 如何招聘高技能的IT人才
- 如何在CMD下运用管理员权限
- android双缓冲绘图技术分析