设计模式——外观模式
来源:互联网 发布:2017年播的网络腐剧 编辑:程序博客网 时间:2024/05/29 15:51
外观模式在我们的项目中使用的还是比较普遍的。外观模式遵守了设计模式六大原则之一的迪米特法则(最少知识法则),一个应用实体应当尽可能少的与其他实体发生相互作用。
外观模式的实用性:
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
- 设计模式—外观模式
- 设计模式—外观模式
- 设计模式—外观模式
- 每日设计模式——外观模式
- 浅谈设计模式——外观模式
- 设计模式——外观模式(Facade)
- 设计模式——外观模式
- JAVA设计模式——外观模式
- java设计模式——外观模式
- 设计模式——外观模式
- 结构性设计模式——外观模式
- 设计模式——外观模式
- 设计模式——外观模式
- 设计模式(4)——外观模式
- C++设计模式——外观模式
- 设计模式——外观模式(FacadePattern)
- 设计模式——外观模式
- 设计模式<三>——外观模式
- web常用小技术集合
- Tomcat 安全配置与性能优化
- python 内置map()和six.moves.map()区别
- 设计模式 单例模式
- 程序员健康指南
- 设计模式——外观模式
- cs231n-反向传播与神经网络
- 欢迎使用CSDN-markdown编辑器
- Java修饰符总结
- python入门神书:500 lines or less
- python给qq邮箱发送邮件
- Codeforces Round #401(Div. 2)A. Shell Game【循环节规律】
- 安卓使用FastJson解析Json数据并展示到ListView中
- 第一个SpringMVC程序