石家庄网站建设公司黄页,如何能让网站尽快备案通过,小程序制作开发如意推,研发和开发的区别区别主要体现在行为上#xff0c;而不是结构上#xff0c;所以#xff0c;看时序图就能很好的看出两者的区别。
状态模式 看1.4#xff0c;状态B是状态A创建的#xff0c;也就是由系统本身控制的。调用者不能直接指定或改变系统的状态转移
所以#xff0c;状态是系统自…区别主要体现在行为上而不是结构上所以看时序图就能很好的看出两者的区别。
状态模式 看1.4状态B是状态A创建的也就是由系统本身控制的。调用者不能直接指定或改变系统的状态转移
所以状态是系统自身的固有的调用者不能控制系统的状态转移。比如一个请假单有“部长审批”-“经理审批”-“审批通过”-“审批不通过”等状态请假者没有办法将一个部长都还没审批完的请假单提交给经理这个状态转换只能系统自己完成。
策略模式 看1.5,策略B是调用者指定的系统自身并不能指定或改变策略。
所以策略是外界给的策略怎么变是调用者考虑的事情系统只是根据所给的策略做事情。这时系统很像是一台电脑根据指令执行动作打一鞭子滚一滚。
知识检测
小明中国出发到日本再到美国去旅行在不同的国家都要做两件事问候和打招呼怎么做取决于他在哪个国家。就是编程时经常碰到的多语言问题了根据需求请问该使用哪种模式开发者写了下面的代码请问下面的代码是状态模式还是策略模式
public class GreetingContext {private Country country;public GreetingContext(Country country){this.country country;}public void changeCountry(Country country){this.country country;}public void sayHello(){country.sayhello();}public void greet(){country.greet();}}//国家接口
public interface Country {void sayhello();void greet();
}//中国
public class China implements Country {public void sayhello() {System.out.println(你好);}public void greet() {System.out.println(握手);}
}//美国
public class America implements Country {public void sayhello() {System.out.println(hello!);}public void greet() {System.out.println(kiss);}
}//调用
public class Client {public static void main(String[] args){GreetingContext context new GreetingContext(new China());context.sayHello();context.greet();context.changeCountry(new America());context.sayHello();context.greet();}
}参考状态模式和策略模式的比较
图片来自图说设计模式