设计模式——外观模式

外观模式在我们的项目中使用的还是比较普遍的。外观模式遵守了设计模式六大原则之一的迪米特法则(最少知识法则),一个应用实体应当尽可能少的与其他实体发生相互作用。
外观模式的实用性:
1.为一个复杂子系统提供一个简单接口。
2.提高子系统的独立性。
3.在层次化结构中,可以使用外观模式定义系统中每一层的入口。
举个例子:这个例子跟代理模式里面的例子一样还是关于接项目的事情,假如说我在北京工作,接了一个上海的项目,但是由于太远我又不想去上海,怎么办呢?此时刚好我一个同学在上海上班,于是我就跟我的同学联系,让他帮我把这个项目谈过来。接项目肯定需要 面谈—>起草合同—>收首款—>做项目—>收尾款。除了完成项目的过程是由我本人执行之外,其他的都是由我同学来处理的。就在此时,我另一个同学在北京也是接了一个上海的项目,他了解了我同学帮我谈项目的事情以后,也想找他帮忙。这样我和北京同学我俩就没必要直接跟上海的打交道了,而是由上海的同学处理。
这里写图片描述
通过上图就可以知道外观模式的作用了,节省了很多步骤,不然的话就会是第一种情况,那样的话就得不偿失了。
示例代码:
Project接口

public interface Project {
    String doSth();
}

面谈Interview类

public class Interview implements Project {
    @Override
    public String doSth() {
        return "interview--->";
    }
}

起草合同DrafContract类

public class DrafContract implements Project {
    @Override
    public String doSth() {
        return "drafContract--->";
    }
}

收首款ReceiveFirst类

public class ReceiveFirst implements Project {
    @Override
    public String doSth() {
        return "receiveFirst--->";
    }
}

收尾款EndParagraph类

public class EndParagraph implements Project {
    @Override
    public String doSth() {
        return "endParagraph--->";
    }
}

同学Schoolmate类

public class Schoolmate {
    public void doSth(){
        Project interview = new Interview();
        System.out.println(interview.doSth());
        Project drafContract = new DrafContract();
        System.out.println(drafContract.doSth());
        Project receiveFirst = new ReceiveFirst();
        System.out.println(receiveFirst.doSth());
        Project endParagraph = new EndParagraph();
        System.out.println(endParagraph.doSth());
    }
}

测试代码

new Schoolmate().doSth();

运行效果图
这里写图片描述
外观模式到这里就结束,其实我们通用的工具类就是这个模式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值