好了,我们还是开一个故事吧。
我们看到过这样的一个表情,我们的程序员接收到来自四面八方的需求,要和不同的人打交道,应对各种所谓需求背后还加多句:“领导提出来的,很重要“之类的结束语,最终过载,导致崩溃跳楼的情况。哈哈
而且我们的美工同学也有这样的经历吧!
这种混乱的需求来源,导致了下面这种情况。
所以,与其让整体暴漏在问题前,不如推我们的PM出去面对所有
正所谓集体阵亡,不如死一个好。
好了,我们还是开一个故事吧。
我们看到过这样的一个表情,我们的程序员接收到来自四面八方的需求,要和不同的人打交道,应对各种所谓需求背后还加多句:“领导提出来的,很重要“之类的结束语,最终过载,导致崩溃跳楼的情况。哈哈
而且我们的美工同学也有这样的经历吧!
这种混乱的需求来源,导致了下面这种情况。
所以,与其让整体暴漏在问题前,不如推我们的PM出去面对所有
正所谓集体阵亡,不如死一个好。
编这个策略模式的故事真的不好想,他和前面的桥接模式很类似,虽然桥接是结构模式,而策略是行为模式。
这次的故事真的不容易编啊,我们来看下一个我们变成遇到的情况吧。
public class SortHelper{
public static final int SORT_HEAP=0;
public static final int SORT_BIN=1;
public static final int SORT_SHELL=2;
public void sort(int type){
if(type==SORT_HEAP){
HeapSort();
}else if(type==SORT_BIN){
BinSort();
}else if(type==SORT_SHELL){
ShellSort();
}
}
public void HeapSort(){
System.out.println("this is heap sort");
}
public void BinSort(){
System.out.println("this is heap sort");
}
public void ShellSort(){
System.out.println("this is shell sort");
}
}
在我们的这个排序小助手类,我们根据不同的算法来选择不同的实现。但这个有一些问题,如果我们以后加了新的方法怎么办?
一种方法淡然是直接简单的修改,加多了else if
,然后加多新的方法,但这不太像ocp原则啊,我们对修改尽量封闭的。而且当条件多了的时候,整个就恨臃肿,不容易维护了。
为此我们需要一些调整,这时候策略模式登场
在说完门面,需要提到一个他的近亲,就是同属于结构模式的装饰(Decorator)。
按照开头写故事思路,这故事真是憋了好久才想到套娃的案例。
应该很多人都有看过套娃吧?没看过的就看上面的图,挺好懂得,就是一个嵌套一个的,挺有意思的。
不断的拆开这些套娃,发现里面还有更小的套娃,在拆开发现还有更更小的套娃….
打开过程是挺惊喜的,不过装回去就麻烦了,呵呵。
《桥接》 — SanjayF |
---|
小时候,梦想是当一名宇航员,驾驭飞船,太空探索。 |
长大后,梦想是当一名渔船夫,划着扁舟,荡漾湖面。 |
后来啊,梦想是当一名大土豪,开着汽车,周游列国。 |
而现在,梦想是当一名好码农,敲着代码,写完桥接。 |
图: 周庄的桥 |
说到门面这个词, 在我国的文化就很有内涵啦!
不过Facade
这个词有时候翻译为外观。
到底该怎么理解这个门面模型呢?
我们可以看一个公司的架构
董事长同他的总经理说他要把今年的销售额翻30
倍吧。总经理听了脸都青了,但没办法,还是得干活,说行,然后就把指标发下去了,让下面的干活去。即把实际做的事情分割给不同部门,然后自己又在办公室继续玩电脑了。
这样对于发号施令的董事长,不需要知道具体的细节,只需要记得找总经理负责这事就好了。
就是苦了这个总经理,需要了解所有的部门情况,分割不同的事情给下面的人干活去。
所以我们可以简化这个流程成这样的,老板说要去赚钱,总经理找了技术部开发了个杀手级应用,然后销售部门就负责去卖,从而达到赚钱的效果。