好了,我们还是开一个故事吧。
我们看到过这样的一个表情,我们的程序员接收到来自四面八方的需求,要和不同的人打交道,应对各种所谓需求背后还加多句:“领导提出来的,很重要“之类的结束语,最终过载,导致崩溃跳楼的情况。哈哈
enter image description here

而且我们的美工同学也有这样的经历吧!
enter image description here

这种混乱的需求来源,导致了下面这种情况。

enter image description here

所以,与其让整体暴漏在问题前,不如推我们的PM出去面对所有
正所谓集体阵亡,不如死一个好。

enter image description here

Read more »

编这个策略模式的故事真的不好想,他和前面的桥接模式很类似,虽然桥接是结构模式,而策略是行为模式。

这次的故事真的不容易编啊,我们来看下一个我们变成遇到的情况吧。

 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原则啊,我们对修改尽量封闭的。而且当条件多了的时候,整个就恨臃肿,不容易维护了。

为此我们需要一些调整,这时候策略模式登场

Read more »

enter image description here

在说完门面,需要提到一个他的近亲,就是同属于结构模式的装饰(Decorator)。

按照开头写故事思路,这故事真是憋了好久才想到套娃的案例。

应该很多人都有看过套娃吧?没看过的就看上面的图,挺好懂得,就是一个嵌套一个的,挺有意思的。
不断的拆开这些套娃,发现里面还有更小的套娃,在拆开发现还有更更小的套娃….
打开过程是挺惊喜的,不过装回去就麻烦了,呵呵。

Read more »

《桥接》 — SanjayF
小时候,梦想是当一名宇航员,驾驭飞船,太空探索。
长大后,梦想是当一名渔船夫,划着扁舟,荡漾湖面。
后来啊,梦想是当一名大土豪,开着汽车,周游列国。
而现在,梦想是当一名好码农,敲着代码,写完桥接。
enter image description here
图: 周庄的桥
Read more »

说到门面这个词, 在我国的文化就很有内涵啦!
不过Facade 这个词有时候翻译为外观。
到底该怎么理解这个门面模型呢?

我们可以看一个公司的架构

enter image description here

董事长同他的总经理说他要把今年的销售额翻30倍吧。总经理听了脸都青了,但没办法,还是得干活,说行,然后就把指标发下去了,让下面的干活去。即把实际做的事情分割给不同部门,然后自己又在办公室继续玩电脑了。

这样对于发号施令的董事长,不需要知道具体的细节,只需要记得找总经理负责这事就好了。
就是苦了这个总经理,需要了解所有的部门情况,分割不同的事情给下面的人干活去。

所以我们可以简化这个流程成这样的,老板说要去赚钱,总经理找了技术部开发了个杀手级应用,然后销售部门就负责去卖,从而达到赚钱的效果。

Read more »