zoukankan      html  css  js  c++  java
  • 设计模式(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. 以上就是对于外观模式的基本了解了,外观模式的最大好处,也就是优点也就体现出来了,那就是客户端跟子系统松散耦合。
  • 相关阅读:
    Leetcode 214. Shortest Palindrome
    Leetcode 5. Longest Palindromic Substring
    windows环境下MySQL-5.7.12-winx64下载安装与配置
    随机森林(Random Forests)
    机器学习基石笔记3——在何时可以使用机器学习(3)
    Linux服务器配置---ssh配置
    Linux基础命令---more
    Linux服务器---流量监控ntop
    Linux基础命令---gunzip
    Linux服务器---ssh登录
  • 原文地址:https://www.cnblogs.com/lvsling/p/8480478.html
Copyright © 2011-2022 走看看