java设计模式之外观模式
2015-09-28 12:14
477 查看
外观模式就是 定义了一个将子系统的一组接口集成在一起的高级接口,用来提供一个一致的界面,通过这个界面,其他系统可以方便地调用子系统中的功能,而不需要关注子系统内部的变化。
生活例子说明:比如我们投资者,如果我们把钱投资去买股票,我们需要通过关注很多只股票来筛选出我们可以买的股票,筛选出来后买了还要时刻关注它以便在合适的时候卖出,这样很烦,这在软件中叫耦合度过高;如果我们投资基金,我们只需要关注基金涨跌,而实际帮我们操作的是基金经理人,我们不需要操心。
例子:现在要一个应用,他需要:
1.接受客户资料(账号,地址,信用卡资料)
2.验证客户输入的资料
3.保存客户的资料
这样,这个应用就需要3个类:Accent,Address和Creditcard。这三个类都有验证资料的isVaild方法,保存资料的save方法和接受输入资料的构造器。
这样的话我们只需要设计一个外观类,这个外观类中就有接受资料输入,验证资料和保存资料的功能(new3个对象,调用三个类中的),把资料放入外观类中,通过外观类对3个类进行操作即可。(AccountManger类就是客户类)
用了CustomerFacader类后客户类就不需要和子系统直接接触了,降低耦合度。
使用外观模式需要注意的事项:
1.在设计外观类时,不需要增加额外的功能。
2.不要从外观方法中返回子系统中的组件给客户。
3.外观方法最适合提供特定的高层次的业务服务,而不是进行低层次的单独的业务执行。
生活例子说明:比如我们投资者,如果我们把钱投资去买股票,我们需要通过关注很多只股票来筛选出我们可以买的股票,筛选出来后买了还要时刻关注它以便在合适的时候卖出,这样很烦,这在软件中叫耦合度过高;如果我们投资基金,我们只需要关注基金涨跌,而实际帮我们操作的是基金经理人,我们不需要操心。
例子:现在要一个应用,他需要:
1.接受客户资料(账号,地址,信用卡资料)
2.验证客户输入的资料
3.保存客户的资料
这样,这个应用就需要3个类:Accent,Address和Creditcard。这三个类都有验证资料的isVaild方法,保存资料的save方法和接受输入资料的构造器。
这样的话我们只需要设计一个外观类,这个外观类中就有接受资料输入,验证资料和保存资料的功能(new3个对象,调用三个类中的),把资料放入外观类中,通过外观类对3个类进行操作即可。(AccountManger类就是客户类)
用了CustomerFacader类后客户类就不需要和子系统直接接触了,降低耦合度。
使用外观模式需要注意的事项:
1.在设计外观类时,不需要增加额外的功能。
2.不要从外观方法中返回子系统中的组件给客户。
3.外观方法最适合提供特定的高层次的业务服务,而不是进行低层次的单独的业务执行。
相关文章推荐
- java的三大特性之多态
- 【spring data jpa】带有条件的查询后分页和不带条件查询后分页实现
- JAVA基础学习day18--常用工具类
- spring源码学习(1)-bean包中主要接口部分的简单介绍
- POST JSON fails with 415 Unsupported media type, SpringMVC
- eclispe中的maven项目使用spring报java.lang.ClassNotFoundException: org.springframework.web.c
- java getConstructor 抛出NoSuchMethodException
- spring MVC 配置返回JSON格式的数据模型
- 主流框架Struct2 Spring Hibernate的理解
- Java线程安全与同步
- 如何 使用eclipse 建立maven3 项目 (入门级)
- Study schedule for new work.
- HIVE Exception in thread "main" java.lang.IncompatibleClassChangeError: Found class jline.Terminal,
- eclipse debug技巧
- java中的for循环
- Spring 使用context:annotation-config的设置
- Java 比较两个日期的方法
- MyEclipse 生成javaDoc文档
- SpringMVC与Struts2区别
- java内存分配