外观模式 | Facade Pattern
来源:互联网 发布:数据库基础知识总结 编辑:程序博客网 时间:2024/05/22 13:11
外观模式(Facade),为子系统中的一组接口提供一个一致的界面,定义一个高层接口,这个接口使得这一子系统更加容易使用。
结构
Facade:这个外观类为子系统提供一个共同的对外接口
Clients:客户对象通过一个外观接口读写子系统中各接口的数据资源。
适用场景
在以下情况下可以考虑使用外观模式:
(1)设计初期阶段,应该有意识的将不同层分离,层与层之间建立外观模式。
(2) 开发阶段,子系统越来越复杂,增加外观模式提供一个简单的调用接口。
(3) 维护一个大型遗留系统的时候,可能这个系统已经非常难以维护和扩展,但又包含非常重要的功能,为其开发一个外观类,以便新系统与其交互。
创建一个接口及实现该接口的实体类
public interface Shape { void draw();}public class Rectangle implements Shape { @Override public void draw() { System.out.println("Rectangle::draw()"); }}public class Square implements Shape { @Override public void draw() { System.out.println("Square::draw()"); }}public class Circle implements Shape { @Override public void draw() { System.out.println("Circle::draw()"); }}
创建一个外观类:
public class ShapeMaker { private Shape circle; private Shape rectangle; private Shape square; public ShapeMaker() { circle = new Circle(); rectangle = new Rectangle(); square = new Square(); } public void drawCircle(){ circle.draw(); } public void drawRectangle(){ rectangle.draw(); } public void drawSquare(){ square.draw(); }}
使用该外观类画出各种类型的形状。
public class FacadePatternDemo { public static void main(String[] args) { ShapeMaker shapeMaker = new ShapeMaker(); shapeMaker.drawCircle(); shapeMaker.drawRectangle(); shapeMaker.drawSquare(); }}
使用外观模式的优点
(1)实现了子系统与客户端之间的松耦合关系。
(2)客户端屏蔽了子系统组件,减少了客户端所需处理的对象数目,并使得子系统使用起来更加容易。
阅读全文
0 0
- 外观模式(Facade Pattern)
- 外观模式(Facade Pattern)
- 外观模式 Facade Pattern
- 外观模式(Facade Pattern)
- 外观模式(Facade Pattern)
- facade pattern--外观模式
- 外观模式(Facade Pattern)
- Facade Pattern 外观模式
- 外观模式 | Facade Pattern
- 外观模式(facade pattern)
- 外观模式(Facade Pattern)
- 外观模式(Facade Pattern)
- 外观模式(Facade Pattern)
- 外观模式(Facade Pattern)
- 外观模式(Facade Pattern)小结
- 外观模式(Facade Pattern)
- 外观模式(Facade pattern)
- 【Design Pattern】外观模式 Facade
- mysql replace into 遇上主键自增
- use python to sendmail
- nutch2二次开发笔记
- JAVA函数实现任意给定一组数, 找出任意数相加等于某数或者在一个范围
- 正则中出现多个贪婪模式
- 外观模式 | Facade Pattern
- 设计模式之单例模式
- QNX system architecture 11
- 关于HTTP协议,一篇就够了
- 剑指offer
- 微信小程序 从服务器获取数据(十四)
- QNX system architecture 16
- 解决setImageResource()内存溢出
- Petri Net Simulation UVA