设计模式学习笔记(二):门面模式【Facade】(一) 问题的提出
来源:互联网 发布:局域网域名服务器搭建 编辑:程序博客网 时间:2024/06/12 22:20
学习自博客园的文章,作者 cbf4Life cbf4life@126.com。http://www.cnblogs.com/cbf4life/tag/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/
随着系统的不断改进和开发,它们会变得越来越复杂,系统会生成大量的类,这使得程序流程更难被理解。门面模式可为这些类提供一个简化的接口,从而简化访问这些类的复杂性。门面模式(Facade)也被称为正面模式、外观模式,这种模式用于将一组复杂的类包装到一个简单的外部接口中。
好,我们继续讲课。大家都是高智商的人,都写过纸质的信件吧,比如给女朋友写情书什么的,写信的过程大家都还记得吧,先写信的内容,然后写信封,然后把信放到信封中,封好,投递到信箱中进行邮递,这个过程还是比较简单的,虽然简单,这四个步骤都是要跑的呀,信多了还是麻烦,比如到了情人节,为了大海捞针,给十个女孩子发情书,都要这样跑一遍,你不要累死,更别说你要发个广告信啥的,一下子发1 千万封邮件,那不就完蛋了?那怎么办呢?还好,现在邮局开发了一个新业务,你只要把信件的必要信息高速我,我给你发,我来做这四个过程,你就不要管了,只要把信件交给我就成了。
在这中环境下,最累的是写信的人,为了发送一封信出去要有四个步骤,而且这四个步骤还不能颠倒,你不可能没写信就把信放到信封吧,写信的人要知道这四个步骤,而且还要知道这四个步骤的顺序,恐怖吧,我们先看看这个过程如何表现出来的:
先看写信的过程接口,定义了写信的四个步骤:
package com.facade;/** * 定义一个写信的过程 */public interface LetterProcess {//首先要写信的内容public void writeContext(String context);//其次写信封地址public void fillEnvelope(String address);//把信放到信封里public void letterIntoEnvolpe();//然后邮递public void sendLetter();}
写信过程的具体实现:
package com.facade;/** * 具体的实现类 */public class LetterProcessImpl implements LetterProcess{public void writeContext(String context){System.out.println("填写信的内容..." + context);}public void fillEnvelope(String address){System.out.println("填写收件人地址及姓名..." + address);}public void letterIntoEnvolpe(){System.out.println("把信放到信封中...");}public void sendLetter(){System.out.println("邮递信件...");}}
然后就有人开始用这个过程写信了:
package com.facade;/** * 我要开始写信了 */public class Client {public static void main(String[] args){//创建一个处理信件的过程LetterProcess letterProcess = new LetterProcessImpl();letterProcess.writeContext("Hello,It's me.");letterProcess.fillEnvelope("Happy Road No.666");letterProcess.letterIntoEnvolpe();letterProcess.sendLetter();}}
然后就有人开始用这个过程写信了:
package com.facade;/** * 具体的实现类 */public class LetterProcessImpl implements LetterProcess{public void writeContext(String context){System.out.println("填写信的内容..." + context);}public void fillEnvelope(String address){System.out.println("填写收件人地址及姓名..." + address);}public void letterIntoEnvolpe(){System.out.println("把信放到信封中...");}public void sendLetter(){System.out.println("邮递信件...");}}
那这个过程与高内聚的要求相差甚远,你想,你要知道这四个步骤,而且还要知道这四个步骤的顺序,一旦出错,信就不可能邮寄出去,那我们如何来改进呢?
0 0
- 设计模式学习笔记(二):门面模式【Facade】(一) 问题的提出
- 设计模式学习笔记(二):门面模式【Facade】(二) 问题的改进
- 设计模式学习笔记--门面(Facade)模式
- 门面(Facade)模式 二
- 门面(Facade)模式 一
- 设计模式:门面模式(Facade)
- 【设计模式】 门面(Facade)模式
- 设计模式(十)facade门面模式
- 门面(Facade)模式
- 门面(Facade)模式
- 门面(Facade)模式
- 门面(Facade)模式
- 门面(Facade)模式
- 门面(facade)模式
- Facade(门面模式)
- 门面模式 (Facade)
- 门面模式(Facade)
- 门面(Facade)模式
- 在自定义cell上获取当前下标
- 设置透明
- js 模式窗口、非模式窗口
- 第三节 Swift 函数和闭包
- latex插入图片路径设置问题
- 设计模式学习笔记(二):门面模式【Facade】(一) 问题的提出
- getopt函数
- (黑马程序员)学习笔记,网络编程TCP
- iOS开发之Quartz2D详解
- 模拟操作系统实现-使用Java 实现。ooad
- plsql使用Text Importer导入csv数据时不显示导入的个数出现假死的解决办法
- Swift 学习之二十:类型强转(+、-、*、/)
- 第四节 Swift对象和类
- 紧急拨号盘的调用