zoukankan      html  css  js  c++  java
  • 9 外观模式(Facade)

    外观模式是为了解决类与类之间的依赖关系的,像spring一样,可以将类和类之间的关系配置到配置文件中,而外观模式就是将他们的关系放在一个Facade类中,降低了类类之间的耦合度,该模式中没有涉及到接口,看下类图:(我们以一个计算机的启动过程为例)

     
     
     
    1. package com.liubo.patterns.facade;
      /**
       * 
       * @author liubo
       *
       */
      public class CPU {
      	public void startup() {
      		System.out.println("cpu startup");
      	}
      	public void shutdown() {
      		System.out.println("cpu shutdown");
      	}
      }
      

        


    1. package com.liubo.patterns.facade;
      /**
       * @author liubo
       *
       */
      public class Memory {
      	public void startup() {
      		System.out.println("memory startup");
      	}
      	public void shutdown() {
      		System.out.println("memory shutdown");
      	}
      }
      

        

    2. package com.liubo.patterns.facade;
      /**
       * @author liubo
       *
       */
      public class Disk {
      	public void startup() {
      		System.out.println("disk startup");
      	}
      	public void shutdown() {
      		System.out.println("disk shutdown");
      	}
      }
      

        

      /**
       * 
       */
      package com.liubo.patterns.facade;
      /**
       * @author liubo
       *
       */
      public class Computer {
      	private CPU cpu;
      	private Memory memory;
      	private Disk disk;
      	/**
      	 * @param cpu
      	 * @param memory
      	 * @param disk
      	 */
      	public Computer() {
      		this.cpu = new CPU();
      		this.memory = new Memory();
      		this.disk = new Disk();
      	}
      	public void startup() {
      		System.out.println("start the computer");
      		cpu.startup();
      		memory.startup();
      		disk.startup();
      		System.out.println("start computer finished");
      	}
      	public void shutdown() {
      		System.out.println("begin to shutdown");
      		cpu.shutdown();
      		memory.shutdown();
      		disk.shutdown();
      		System.out.println("computer closed");
      	}
      

        

      /**
       * 
       */
      package com.liubo.patterns.facade;
      /**
       * @author liubo
       *
       */
      public class Computer {
      	private CPU cpu;
      	private Memory memory;
      	private Disk disk;
      	/**
      	 * @param cpu
      	 * @param memory
      	 * @param disk
      	 */
      	public Computer() {
      		this.cpu = new CPU();
      		this.memory = new Memory();
      		this.disk = new Disk();
      	}
      	public void startup() {
      		System.out.println("start the computer");
      		cpu.startup();
      		memory.startup();
      		disk.startup();
      		System.out.println("start computer finished");
      	}
      	public void shutdown() {
      		System.out.println("begin to shutdown");
      		cpu.shutdown();
      		memory.shutdown();
      		disk.shutdown();
      		System.out.println("computer closed");
      	}
      

        


     
    //output
    start the computer
    cpu startup
    memory startup
    disk startup
    start computer finished
    begin to shutdown
    cpu shutdown
    memory shutdown
    disk shutdown
    computer closed
     
    如果我们没有Computer类,那么,CPU、Memory、Disk他们之间将会相互持有实例,产生关系,这样会造成严重的依赖,修改一个类,可能会带来其他类的修改,这不是我们想要看到的,有了Computer类,他们之间的关系被放在了Computer类里,这样就起到了解耦的作用,这,就是外观模式!





  • 相关阅读:
    Nginx常用命令
    Nginx进程模型
    华为联运游戏或应用审核驳回:使用花币充值时,对支付延时处理不当,导致商品不到账
    使用Data Ability读取系统设置项
    100个HarmonyOS 2.0开发者Beta公测名额,限时认领!
    【有奖活动】HarmonyOS开发者创新大赛颁奖典礼丨见证星星之火燃爆盛夏
    你其实可以更快!用Toolkit拖拽式编码方法帮你快速提升开发效率
    真机调试设备不够?华为AGConnect云调试帮你忙
    华为后台某应用商品展示价格币种随其他应用配置而变化
    HMS Core.Sparkle影音娱乐创新沙龙邀您参加
  • 原文地址:https://www.cnblogs.com/liubo6/p/4563429.html
Copyright © 2011-2022 走看看