• 设计模式(7)----外观模式


    1. 简介:
      1. 软件开发过程中,客户端经常与复杂的系统内部的子系统进行耦合,从而导致客户单程序随着子系统的变化而变化,为了将他们解耦而产生是外观模式,也称作门面模式
    2. 定义:
      1. 外观模式(Facade),为子系统中的一组接口提供一个一致的界面,定义一个高层接口,这个接口使得这一子系统更加容易使用。
    3. 组成:
      1. façade:这个外观类为子类提供一个共同的对外接口
      2. Client:客户对象通过一个外观接口读写子系统中各个接口的数据资源
    4. 示例情景:
      1. 一个电脑的开机与关机,电脑开机,需要先提供电力,然后内存启动,cpu启动,最后电脑启动,电脑关闭,需要先cpu关闭,然后内存关闭,最后电力关闭,使用外观模式来模拟编程实现。
    5. 步骤:
      1. 定义一个外观类ComputerFacade

    package com.lvsling.facade;

    public class ComputerFacade {

    private CPU cpu;

    private Memory memory;

    private Power power;

    public ComputerFacade(){

    cpu = new CPU();

    memory = new Memory();

    power = new Power();

    }

    public void startup(){

    power.startup();

    memory.startup();

    cpu.startup();

    }

    public void run(){

    System.out.println("---------------");

    System.out.println("computer run...");

    System.out.println("---------------");

    }

    public void shutdown(){

    cpu.shutdown();

    memory.shutdown();

    power.shutdown();

    }

    }

     

    1. 定义一个子系统类Power

       

    package com.lvsling.facade;

    public class Power {

    public void startup(){

    System.out.println("Power start...");

    }

    public void shutdown(){

    System.out.println("Power shutdown...");

    }

    }

     

    1. 定义一个子系统类Memory

       

    package com.lvsling.facade;

    public class Memory {

    public void startup(){

    System.out.println("Memory start...");

    }

    public void shutdown(){

    System.out.println("Memory shutdown...");

    }

    }

     

    1. 定义一个子系统类CPU

       

    package com.lvsling.facade;

    public class CPU {

    public void startup(){

    System.out.println("CPU start...");

    }

    public void shutdown(){

    System.out.println("CPU shutdown...");

    }

    }

     

    1. 定义一个客户端类Client

       

    package com.lvsling.facade;

    public class Client {

        public static void main(String[] args) {

            ComputerFacade computerFacade = new ComputerFacade();

    computerFacade.startup();

    computerFacade.run();

    computerFacade.shutdown();

        }

    }

     

    1. 控制台打印结果

       

    Power start...

    Memory start...

    CPU start...

    ---------------

    computer run...

    ---------------

    CPU shutdown...

    Memory shutdown...

    Power shutdown...

     

    1. 优点:
      1. 外观模式屏蔽了子系统组件,从而简化了接口,减少客户端处理的对象数据并使子系统的使用更加简单
      2. 外观模式实现了客户单和子系统的耦合关键,而子系统内部的功能是紧耦合的,松耦合是子系统的变化不会影响到客户端
    2. 缺点:
      1. 如果修改了子系统那么需要修改外观类或客户端的源码
    3. 应用场景
      1. 为一个复杂的子系统提供简单的接口
      2. 提供子系统的独立性
      3. 在层次结构中,可以定义外观模式定义系统中每一层的入口
    4. 总结
      1. 以上就是对于外观模式的基本了解了,外观模式的最大好处,也就是优点也就体现出来了,那就是客户端跟子系统松散耦合。
  • 相关阅读:
    Advanced Configuration Tricks
    Reviewing the Blog Module
    Editing and Deleting Data
    Making Use of Forms and Fieldsets
    Understanding the Router
    SQL Abstraction and Object Hydration
    Preparing for Different Databases
    Java学习理解路线图
    Openstack学习历程_1_视频
    CentOS安装Nginx负载
  • 原文地址:https://www.cnblogs.com/lvsling/p/8480478.html
Copyright © 2020-2023  润新知