`
hulianwang2014
  • 浏览: 694878 次
文章分类
社区版块
存档分类
最新评论
  • bcworld: 排版成这样,一点看的欲望都没有了
    jfinal

外观模式(Facade Pattern)

 
阅读更多

外观模式:对一个集合接口提供统一的接口并将其作为子系统,门面定义了更高一级的接口,它能够使子系统更容易使用。像spring一样,可以将类和类之间的关系配置到配置文件中,而外观模式就是将他们的关系放在一个Facade类中,降低了类类之间的耦合度。

看一个简单的例子,UML类图如下所示:


ShapeMaker使用了一个具体的类,这个类能够帮助用户调用到所有类的操作。FacadeePatternDemo作为测试类,测试调用功能。

Shape.java

public interface Shape {
 void draw();
}

Rectangle.java

public class Rectangle implements Shape {
 @Override
 public void draw() {
 System.out.println("Rectangle::draw()");
 }
}

Square.java

public class Square implements Shape {
 @Override
 public void draw() {
 System.out.println("Square::draw()");
 }
}

Circle.java

public class Circle implements Shape {
 @Override
 public void draw() {
 System.out.println("Circle::draw()");
 }
}

创建Façade类,定义类ShapeMaker.java

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();
 }
}

定义测试类FacadePatternDemo

public class FacadePatternDemo {
 public static void main(String[] args) {
 ShapeMaker shapeMaker = new ShapeMaker();
 shapeMaker.drawCircle();
 shapeMaker.drawRectangle();
 shapeMaker.drawSquare(); 
 }
}

输出结果:

Circle::draw()
Rectangle::draw()
Square::draw()

分享到:
评论

相关推荐

    外观模式 Facade Pattern

    外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。

    外观模式(Facade Pattern)-结构型模式

    设计模式面面观(13):外观模式(Facade Pattern)-结构型模式 http://blog.csdn.net/fanweiwei/archive/2008/04/17/2299641.aspx

    设计模式之外观模式(Facade Pattern)

    为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。

    详解PHP中的外观模式facade pattern

    主要介绍了详解PHP中的外观模式facade pattern的详细用法以及代码实例,对此有需求的朋友参考下吧。

    解析C#设计模式编程中外观模式Facade Pattern的应用

    主要介绍了C#设计模式编程中外观模式Facade Pattern的应用,外观模式中分为门面(Facade)和子系统(subsystem)两个角色来进行实现,需要的朋友可以参考下

    FacadePattern.unitypackage

    FacadePattern.unitypackage是C#版设计模式中的外观模式,采用unity举例和C#举例,详细说明了外观模式的用法。

    C#版 24种设计模式

    适配器模式(Adapter Pattern) 提供者模式(Provider Pattern) 外观模式(Facade Pattern) 享元模式(Flyweight Pattern) 原型模式(Prototype Pattern) 责任链模式(Chain of Responsibility Pattern) 中介者模式...

    php设计模式 Facade(外观模式)

    模式定义:外观模式(Facade Pattern):外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。外观...

    用Java实现23种设计模式

    外观模式(Facade Pattern) 享元模式(Flyweight Pattern) 代理模式(Proxy Pattern) 3. 行为型模式 责任链模式(Chain of Responsibility Pattern) 命令模式(Command Pattern) 解释器模式(Interpreter...

    C#设计模式_设计模式_C#_

    外观模式(Facade Pattern) 11. 享元模式(Flyweight Pattern) 12. 代理模式(Proxy Pattern) 行为型: 13. 模板方法(Template Method) 14. 命令模式(Command Pattern) 15. 迭代器模式(Iterator Pattern) 16. 观察者...

    c#开发cad预览图块步骤详解

    c#开发cad如何预览图块 1.定义变量的方法代码如下 2. 获取GetDwgImag图像的方法代码 ... 您可能感兴趣的文章:C#设计模式之Facade外观模式解决天河城购物问题示例解析C#设计模式编程中外观模式Facade Pattern的应用

    C#设计模式(23种设计模式)

    外观模式(Facade Pattern) 11. 享元模式(Flyweight Pattern) 12. 代理模式(Proxy Pattern) 13. 模板方法(Template Method) 14. 命令模式(Command Pattern) 15. 迭代器模式(Iterator Pattern) 行为型: ...

    第14章_外观模式.ppt

    外观模式(Facade Pattern):外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。外观模式又称为...

    设计模式PPT

     外观模式(Facade Pattern)  享元模式(Flyweight Pattern)  代理模式(Proxy Pattern) 行为型模式用来对类或对象怎样交互和怎样分配职责进行描述,主要包含以下11种设计模式:  责任链模式(Chain of ...

    设计模式代码——c#

    10. 外观模式(Facade Pattern) 11. 享元模式(Flyweight Pattern) 12. 代理模式(Proxy Pattern) 行为型 13. 模板方法(Template Method) 14. 命令模式(Command Pattern) 15. 迭代器模式(Iterator Pattern) ...

    33种JAVA设计模式DEMO

    外观模式(Facade Pattern) 享元模式(Flyweight Pattern) 代理模式(Proxy Pattern) 3 行为型模式 这些设计模式特别关注对象之间的通信。 责任链模式(Chain of Responsibility Pattern) 命令模式(Command ...

    23种设计模式 (创建型,结构型,行为型)

    外观模式(Facade Pattern) 11. 享元模式(Flyweight Pattern) 12. 代理模式(Proxy Pattern) 13. 模板方法(Template Method) 14. 命令模式(Command Pattern) 15. 迭代器模式(Iterator Pattern) 行为型: ...

    32种设计模式

    外观模式(Facade Pattern) 11. 享元模式(Flyweight Pattern) 12. 代理模式(Proxy Pattern) 13. 模板方法(Template Method) 14. 命令模式(Command Pattern) 15. 迭代器模式(Iterator ...

Global site tag (gtag.js) - Google Analytics