外观模式(Facade)为了小小的纠正一下个人的口语,于是有道了一下:[fə'sɑ:d]
对于外观模式就是为了子系统对外提供的一组接口提供一个统一的界面,似的其他系统对该系统访问都通过一个同一段的界面来完成。
外观模式主要由三部分组成,一个中间类,就是Facade类,负责联系子系统提供对外的接口,一个是多个子系统,一个是客户端负责通过Facade类对子系统的功能进行操作
这里通过简单的工厂生产帽子,被子,笔卖给消费者的过程,并且用Facade类的前后作对比来简单的理解Facade模式:
Facade模式的原理图:
对UML部分理解更清楚了一点,发现前面的UML好多不合理的地方,可以学习
http://blog.csdn.net/zhengzhb/article/details/7187278
普通基础的设计:
package com.designpattern.facade;
public class HatFactory {
public static void saleHat() {
System.out.println("sale a hat");
}
}
package com.designpattern.facade;
public class CapFactory {
public static void saleCap() {
System.out.println("sale a cap");
}
}
package com.designpattern.facade;
public class PenFactory {
public static void salePen() {
System.out.println("sale a pen");
}
}
package com.designpattern.facade;
public class Client {
public static void main(String[] args) {
CapFactory.saleCap();
HatFactory.saleHat();
PenFactory.salePen();
}
}
这样如果客户想买各种商品的话就必须直接和厂家联系,然后买商品,实现起来却是很是麻烦
但是如果引入了如下的Facade类就简单多了,具体操作如下:
package com.designpattern.facade;
public class Facade {
public static void saleHat() {
HatFactory.saleHat();
}
public static void saleCap() {
CapFactory.saleCap();
}
public static void salePen() {
PenFactory.salePen();
}
}
package com.designpattern.facade;
public class Client {
public static void main(String[] args) {
Facade.saleCap();
Facade.saleHat();
Facade.salePen();
}
}
这样在客户买商品的时候只要去Facade商店就行了,直接到商店想买什么就买什么,具体商店和厂家怎么联络的客户是不用去理会的,这样就对于客户端程序员提供了很大的简便可行。一些很好的持久层的框架也是用这样一个设计模式达到一个很好的用户体验。
外观模式通过提供一个统一的对外接口,避免的外部系统和子系统之间的直接联系从而降低了系统间的依赖和复杂度。
但是限制了外部系统对子系统调用的灵活性,只能按照外观类中提供的方式对子系统进行调用。
分享到:
相关推荐
设计模式之外观模式 facade 采用JAVA实现,请结合文档看,欢迎讨论。。
java 设计模式 Facade外观模式 Simple Factory 简单工厂模式,代码有点罗嗦,不过可移植性很强
为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
在这里与各位分享本人从网络上下载的C#面向对象设计模式纵横谈系列视频,共有25节,除了第一节需要各位贡献一点资源分以作为对本人上传资源的回馈,后面的其他资源均不需要... 这是第11节:结构型模式Facade外观模式
C#面向对象设计模式纵横谈(11):Facade 外观模式(结构型模式) (Level 300)
外观模式 Facade 设计模式 还请各位大S指教。
C#面向对象设计模式纵横谈(11):Facade 外观模式(结构型模式)
C#面向对象设计模式纵横谈\C#面向对象设计模式纵横谈\10.Facade 外观模式(结构型模式).wmv )
设计模式中的facade外观模式在JavaScript开发中的运用_.docx
章节介绍:1、爪哇语言结构性模式之变压器模式介绍 2、爪哇语言抽象工厂创立性模式介绍 3、工厂方法创立...10、设计模式之State 11、设计模式之Facade(外观) 12、设计模式之Interpreter(解释器) 13、设计模式之Visitor
设计模式之Facade(外观) 设计模式之Proxy(代理) 设计模式之Adapter(适配器) 设计模式之Composite(组合) 设计模式之Decorator(油漆工) 设计模式之Bridge 设计模式之Flyweight(享元) 行为模式: 设计模式之Template ...
设计模式面面观(13):外观模式(Facade Pattern)-结构型模式 http://blog.csdn.net/fanweiwei/archive/2008/04/17/2299641.aspx
本文实例讲述了PHP设计模式:外观模式Facade。分享给大家供大家参考,具体如下: 1. 概述 外观模式,我们通过外观的包装,使应用程序只能看到外观对象,而不会看到具体的细节对象,这样无疑会降低应用程序的复杂度...
主要介绍了Java设计模式之外观模式(Facade模式)介绍,外观模式(Facade)的定义:为子系统中的一组接口提供一个一致的界面,需要的朋友可以参考下
外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。
设计模式之Facade(外观) 设计模式之Proxy(代理) 设计模式之Adapter(适配器) 设计模式之Composite(组合) 设计模式之Decorator(油漆工) 设计模式之Bridge 设计模式之Flyweight(享元) 行为模式: 设计模式之Template ...
然后,集中介绍了很多流行的设计模式在JavaScript中的应用,包括Module(模块)模式、Observer(观察者)模式、Facade(外观)模式和Mediator(中介者)模式;最后,还探讨了模块化的JavaScript模式、jQuery及其插件...
主要介绍了PHP设计模式之外观模式(Facade),结合实例形式详细分析了PHP外观模式的具体原来、用法及相关操作注意事项,需要的朋友可以参考下
模式定义:外观模式(Facade Pattern):外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。外观...