码迷,mamicode.com
首页 > 其他好文 > 详细

外观模式

时间:2018-01-19 22:24:11      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:raw   oid   []   ring   ima   灵活   make   private   内存   

定义:将细粒度的对象包装成粗粒度的对象,应用程序通过访问这个外观对象,来完成细粒度对象的调用,我们通过外观的包装,使应用程序只能看到外观对象,而不会看到具体的细节对象,这样无疑会降低应用程序的复杂度,并且提高了程序的可维护性。

优点:1、减少系统相互依赖。 2、提高灵活性。 3、提高了安全性。

缺点:不符合开闭原则,如果要改东西很麻烦,继承重写都不合适。

结构图:通过外观对象来组织细粒度的服务的调用,外观对象提供给外部应用程序可以使用的服务,而具体的调用细粒度的过程则被外观对象给封装起来,当然这个过程就是封装变化的部分,而将变化的部分与应用程序进行隔离,无疑对程序的易用性和可维护性都是很大的提高。

技术分享图片

应用:一下案例通过客户端通过外观对象调用不同的形状对象的服务,减少了客户端和应用端的交互,简化的步骤,将外观对象做成单例类,可以在使用对象时减少内存的分配。
1.创建一个接口。

public interface Shape { void draw();}

2.创建接口的实现类(对象):

public class Rectangle : Shape
{
    public void Draw() { }
}

public class Square : Shape
{
    public void Draw(){ }
}

public class Circle : Shape
{
   public void Draw() { }
}

3.创建外观对象:

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

4.创建客户端,调用外观对象:

public class Client {
   public static void main(String[] args) {
      ShapeMaker shapeMaker = new ShapeMaker();

      shapeMaker.drawCircle();
      shapeMaker.drawRectangle();
      shapeMaker.drawSquare();
   }
}

 

外观模式

标签:raw   oid   []   ring   ima   灵活   make   private   内存   

原文地址:https://www.cnblogs.com/wang-jin-fu/p/8318870.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!