• 外观模式


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

    优点: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();
       }
    }
    一直想把之前工作、学习时记录的文档整理到博客上,一方面温故而知新,一方面和大家一起学习 -程序小白
  • 相关阅读:
    Spring boot中Controller的使用
    spring boot 项目属性配置
    使用IDEA创建一个spring boot项目
    使用vue-cli编写todolist组件
    vue-cli脚手架的安装
    KALI LINUX 2.0 2019 更新国内源
    Vue基础入门学习
    解决ES报错NoNodeAvailableException[None of the configured nodes are available:问题
    解决Entity 实体类中加了@Id 注解后仍然出现org.hibernate.AnnotationException: No identifier specified for entity 错误
    APP 安全测试点概述
  • 原文地址:https://www.cnblogs.com/wang-jin-fu/p/8318870.html
Copyright © 2020-2023  润新知