• 设计模式——外观模式


                               设计模式——外观模式

     

      

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

    这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用。

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

    主要解决:降低访问复杂系统的内部子系统时的复杂度,简化客户端与之的接口。

       实现:

          UML类图

     

     

         具体实现代码:

     1 定义接口: Shape
     2 public interface Shape {
     3     void draw();
     4 }
     5 
     6  定义了三个类都分别实现了接口中的方法。
     7 public class Rectangle implements Shape{
     8 
     9     @Override
    10     public void draw() {
    11         // TODO 自动生成的方法存根
    12         System.out.println("Rectangle::draw()");
    13     }
    14  
    15 }
    16 
    17 public class Circle implements  Shape{
    18 
    19     @Override
    20     public void draw() {
    21         // TODO 自动生成的方法存根
    22         System.out.println("Circle::draw()");
    23     }
    24   
    25     
    26 }
    27 
    28 public class Square implements Shape {
    29 
    30     @Override
    31     public void draw() {
    32         // TODO 自动生成的方法存根
    33         System.out.println("Square::draw()");
    34     }
    35   
    36 }
    37 
    38 定义了一个ShapeMarke类,实现上面三个类的方法,以接口Shape为类型来定义变量
    39 
    40 public class ShapeMarke {
    41   
    42     private Shape circle;
    43     private Shape rectangle;
    44     private Shape square;
    45   
    46      public ShapeMarke()
    47      {
    48          circle = new Circle();
    49          rectangle = new Rectangle();
    50          square = new Square(); 
    51      }
    52      
    53      public void drawCircle()
    54      {
    55          circle.draw();
    56      }
    57      
    58      public void drawRectangle()
    59      {
    60          rectangle.draw();
    61      }
    62      
    63      public void drawSquare()
    64      {
    65          square.draw();
    66      }
    67 
    68 
    69 }
    70     
    71 公共测试类
    72 public class FacadePatternDemo {
    73     public static void main(String[] args)
    74     {
    75         ShapeMarke ShapeMarke = new ShapeMarke();
    76           ShapeMarke.drawCircle();
    77           ShapeMarke.drawRectangle();
    78           ShapeMarke.drawSquare();
    79     }
    80 
    81 }
    82     
    83     
    84       
    85     

       运行结果如图:

      

     

     

  • 相关阅读:
    数据结构【图】—022邻接矩阵的深度和广度遍历
    第一百三十一天 how can I 坚持
    第一百三十天 how can I 坚持
    第一百二十九天 how can I坚持
    第一百二十八天 how can i 坚持
    第一百二十七天 how can I 坚持
    第一百二十六天 how can I 坚持
    第一百二十五天 how can I坚持
    第一百二十四天 how can I坚持
    第一百二十三天 how can I 坚持
  • 原文地址:https://www.cnblogs.com/pwhit/p/5504558.html
Copyright © 2020-2023  润新知