Java 策略模式和状态模式
2017-05-16 14:46
253 查看
本文是转载的,转载地址:大白话解释Strategy模式和State模式的区别
先上图:
本质上讲,策略模式和状态模式做得是同一件事:去耦合。怎么去耦合?就是把干什么(语境类)和怎么干(策略接口)分开,互不依赖。打个比方,下面是我一天的行程:
但问题来了,啪啪啪是个技术活,有著名的48式,今天到底要用哪一式呢?于是我的代码变成了这样:
但代码如果是这样的,宝宝肯会被老板开掉的。但宝宝发现,啪啪啪的方式其实取决于我的妹子。对三种不同类型的妹子,我的表现是不同的。
而且我惊讶地发现,所有妹子都把啪啪啪叫做”爱爱“。所以只要我只要知道今天晚上是和哪个妹子在一起,根据多态性,我只要说同一句话:”妹子让我们爱爱吧“。接下来发生的事,我只要闭上眼睛享受就好了。
于是,你懂的:
//OutPut:
周一:I love you!
周二:Ya Mie Die!
以上的就叫:策略模式!
但后来我发现,其实我做的每一件事都取决我的妹子,我彻底震惊了!我的生活不能没有妹子!
于是终于说出了那句话:嫁给我吧!于是,她彻底走进了我的生活!
但你们是懂我的,我的小三怎么办呢?要是每天都能切换情人就最好了!
于是每一天都充满了新鲜感呢!
//OutPut:
周一:I love you!
周二:Ya Mie Die!
于是,我都爱上了这种叫”状态模式“的生活方式。
所以,”策略模式“就好比单身的时候,没有固定情人,每天用微信出去约泡。”状态模式“就是结婚以后,有了固定的情人,生活可以在老婆和小三之间游刃有余!
说到这里,大家一定都豁然开朗了吧!那么,祝大家生活幸福!
先上图:
本质上讲,策略模式和状态模式做得是同一件事:去耦合。怎么去耦合?就是把干什么(语境类)和怎么干(策略接口)分开,互不依赖。打个比方,下面是我一天的行程:
class 我{ 吃饭(){} 逛街(){} 啪啪啪(){} 睡觉(){} }
但问题来了,啪啪啪是个技术活,有著名的48式,今天到底要用哪一式呢?于是我的代码变成了这样:
class 我{ 吃饭(){} 逛街(){} 啪啪啪1式(){} 啪啪啪2式(){} 啪啪啪3式(){} 睡觉(){} }
但代码如果是这样的,宝宝肯会被老板开掉的。但宝宝发现,啪啪啪的方式其实取决于我的妹子。对三种不同类型的妹子,我的表现是不同的。
class 鬼妹 implements 妹子{ 爱爱(){print(”Come on!“);} } class 乖妹 implements 妹子{ 爱爱(){print("I love you!");} } class 萌妹 implements 妹子{ 爱爱(){print("Ya Mie Die!");} } interface 妹子 { 爱爱(); }
而且我惊讶地发现,所有妹子都把啪啪啪叫做”爱爱“。所以只要我只要知道今天晚上是和哪个妹子在一起,根据多态性,我只要说同一句话:”妹子让我们爱爱吧“。接下来发生的事,我只要闭上眼睛享受就好了。
class 我{ 吃饭(); 逛街(); 啪啪啪(妹子 今晚的妹子){ 今晚的妹子.爱爱(); } 睡觉(); }
于是,你懂的:
main(){ 我 胖胖 = new 我(); print("周一:"); 妹子 娘子 = new 乖妹(); 胖胖.啪啪啪(娘子); print("周二:"); 妹子 小三 = new 萌妹(); 胖胖.啪啪啪(小三); }
//OutPut:
周一:I love you!
周二:Ya Mie Die!
以上的就叫:策略模式!
但后来我发现,其实我做的每一件事都取决我的妹子,我彻底震惊了!我的生活不能没有妹子!
class 我{ 吃饭(妹子 今晚的妹子){ 今晚的妹子.饭饭(); } 逛街(妹子 今晚的妹子){ 今晚的妹子.逛逛(); } 啪啪啪(妹子 今晚的妹子){ 今晚的妹子.爱爱(); } 睡觉(妹子 今晚的妹子){ 今晚的妹子.呼呼(); } }
于是终于说出了那句话:嫁给我吧!于是,她彻底走进了我的生活!
class 我{ 吃饭(){ 老婆.饭饭(); } 逛街(){ 老婆.逛逛(); } 啪啪啪(){ 老婆.爱爱(); } 睡觉(){ 老婆.呼呼(); } //fields 妹子 老婆 = new 乖妹子(); }
但你们是懂我的,我的小三怎么办呢?要是每天都能切换情人就最好了!
class 我{ 切换情人(妹子 情人){ 老婆 = 情人; } 吃饭(){ 老婆.饭饭(); } 逛街(){ 老婆.逛逛(); } 啪啪啪(){ 老婆.爱爱(); } 睡觉(){ 老婆.呼呼(); } //fields 妹子 老婆 = new 乖妹子(); }
于是每一天都充满了新鲜感呢!
main(){ 我 胖胖 = new 我(); print("周一:"); //老婆 胖胖.啪啪啪(); print("周二:"); 妹子 小三 = new 萌妹(); 胖胖.切换情人(小三); //小三 胖胖.啪啪啪(); }
//OutPut:
周一:I love you!
周二:Ya Mie Die!
于是,我都爱上了这种叫”状态模式“的生活方式。
所以,”策略模式“就好比单身的时候,没有固定情人,每天用微信出去约泡。”状态模式“就是结婚以后,有了固定的情人,生活可以在老婆和小三之间游刃有余!
说到这里,大家一定都豁然开朗了吧!那么,祝大家生活幸福!
相关文章推荐
- Java 策略模式和状态模式
- java设计模式之责任链模式、状态模式、策略模式
- Java中状态模式和策略模式的区别
- Java重构-策略模式、状态模式、卫语句
- 对比Java设计模式编程中的状态模式和策略模式
- Java设计模式之策略模式与状态模式
- Java状态模式与策略模式
- Java中,状态模式和策略模式的区别
- Java设计模式编程中的状态模式和策略模式
- java设计模式(二)—— 装饰、门面、享元、原型、状态、策略
- Java 状态模式
- [设计模式] - 策略模式(Java篇)
- Java设计模式 Design Pattern:策略模式 Strategy Pattern
- 生成器、桥梁、策略和状态(Builder, Bridge, Strategy and State)模式的区别
- 策略模式与状态模式
- 设计模式:策略模式的实现 c++ 与 java
- java设计模式-----策略模式
- java设计模式之strategy(策略模式)和policy模式(泛化的strategy模式)
- 设计模式解析和实现(C++, java)之二十--状态(state)模式
- Java设计模式 -- 策略模式