2018年12月27日 17:20
原创作品,转载时请务必以超链接形式标明文章原始出处,否则将追究法律责任。

本次我们就看一下设计模式门店模式,即外观模式。这个模式应用场景是啥,就是将一堆单元整合起来,形成一个对接口。比如Scrum Master,作为对接口,其组内人员不收外界操控和打扰。所有的外界干扰均由Master动用资源来解决,这里的资源可以是Master自己,也可以是Scrum Member。所以在这里,Master就是个门店,你要买东西,你找我门店,有货我给你取,没货我给你调。至于我的仓库人员,进货人员,运输人员和你统统没关系。

今天就以一个军事的例子来看一下,首先定义一个军人接口。

public interface 军人
{
    void 行动();
}

再下来我们定义一些不同类型的军人,他们各自具备行动能力。

public class 工程兵 : 军人
{
    public void 行动()
    {
        Console.WriteLine("排雷");
    }
}

public class 狙击手 : 军人
{
    public void 行动()
    {
        Console.WriteLine("狙杀");
    }
}

public class 炮兵 : 军人
{
    public void 行动()
    {
        Console.WriteLine("炮击");
    }
}

接下来,我们要搞一个门面类(团部),有炮兵,当然是团以上规模,你要想排雷,你找门面,你要想定点狙杀,你也找门面。

public class 团部
{
    军人 工程兵;
    军人 狙击手;
    军人 炮兵;

    public 团部()
    {
        工程兵 = new 工程兵();
        狙击手 = new 狙击手();
        炮兵 = new 炮兵();
    }

    public void 排雷()
    {
        工程兵.行动();
    }

    public void 狙击()
    {
        狙击手.行动();
    }

    public void 炮击()
    {
        炮兵.行动();
    }
}

团部就是店面,你想排雷,你找团部,团部调动资源给你。

团部 团部 = new 团部();
团部.排雷();
团部.炮击();
团部.狙击();

你想炮击就炮击,你想狙击就狙击。其实在这里团部就是一个高层接口,隐藏子系统复杂性,整合子系统,简化外部调用。

发表评论
匿名  
用户评论
暂无评论