2020-08-07

无废话设计模式(14)行为型模式

0-前言

  状态模式定义:当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类;

1-实现

1-1、简单UML图

 

 

1-2、代码实现

//1、状态抽象父类abstract class State{ public String StateName; public abstract void Handle(Contex contex);}//2-1、具体状态Aclass StateStop extends State{ public StateStop() {  StateName = "停止状态"; //当前状态 } @Override public void Handle(Contex contex) {  contex.setState(new StateStart() ); //设置下一个状态 }}//2-2、具体状态Bclass StateStart extends State{ public StateStart() {  StateName = "开动状态"; //当前撞他 } @Override public void Handle(Contex contex) {  contex.setState(new StateStop()); //设置下一个状态 }}//3、上下文类class Contex{ private State state; public Contex( State _state) {  this.state = _state; } //1、设置状态 public void setState(State st) {  System.out.println("************当前状态为:"+state.StateName);  this.state = st;  System.out.println("状态变更为:"+state.StateName); } //2、执行方法 public void Request() {  state.Handle(this); }

 

客户端:

  Contex ct = new Contex(new StateStart());  ct.Request();  ct.Request();  ct.Request();

 

运行结果:

 

 

2-应用场景简单总结

1、当对象的行为取决于它的状态,且必须在运行时根据状态来改变自己的行为时;

2、当一个操作对象含大量多分支条件语句,且这些分支依赖该对象的状态时;

无废话设计模式(14)行为型模式Payoneer跨境电商竞化论义乌站之"蜕变"2017年会员大会暨惠州跨境电商交流会平台入驻不用愁,招a商经理有话说全国多地出台邮政物流利好政策,跨境电子商务货物还有运费补贴!一键抠图coles从龙城广场怎么去皇岗口岸?请问南澳桔钓沙怎么去?(没有私家车)南澳情人岛和大鹏金沙湾怎么去?

No comments:

Post a Comment