zoukankan      html  css  js  c++  java
  • Java设计模式(12)——结构型模式之门面模式(Facade)

    一、概述

      概念

      

      简要示意图(没有一个统一的UML图)

      

      角色

      门面角色:门面模式核心,它被客户端调用,并且熟悉子系统

       子系统角色:子系统,子系统并不知道门面的存在,门面对它来说只不过是另外一个客户端而已。

      门面模式就是迪米特法则的一个很好的实践!

    二、实践

      借鉴网友的电脑启动的例子:电脑中有很多组件(比如内存,CPU等),开机的时候都会启动,用户不必一个个和他们打交道,而只需和“门面”打交道

    开启门面即可!

      三个CPU,Memory,Disk类

    /**
     * CPU类
     *
     * @author Administrator
     **/
    public class CPU {
        public void turnOn() {
            System.out.println("CPU turn on...");
        }
        public void turnOff() {
            System.out.println("CPU turn ff...");
        }
    }
    /**
     * Disk类
     *
     * @author Administrator
     **/
    public class Disk {
        public void turnOn() {
            System.out.println("Disk turn on...");
        }
        public void turnOff() {
            System.out.println("Disk turn ff...");
        }
    }
    /**
     * Memory类
     *
     * @author Administrator
     **/
    public class Memory {
        public void turnOn() {
            System.out.println("Memory turn on...");
        }
        public void turnOff() {
            System.out.println("Memory turn ff...");
        }
    }

      门面

    /**
     * 门面类
     *
     * @author Administrator
     **/
    public class Facade {
        private CPU cpu;
        private Disk disk;
        private Memory memory;
    
        public Facade() {
            cpu = new CPU();
            disk = new Disk();
            memory = new Memory();
        }
        public void turnOn() {
            cpu.turnOn();
            disk.turnOn();
            memory.turnOn();
        }
        public void turnOff() {
            cpu.turnOff();
            disk.turnOff();
            memory.turnOff();
        }
    }

      客户端使用

    /**
     * 客户端
     * @author  Administrator
     **/
    public class Client {
        public static void main(String[] args) {
            Facade facade = new Facade();
            facade.turnOn();
            facade.turnOff();
        }
    }

      

    三、改进与思考

      优点

      客户端与子系统之间松耦合

  • 相关阅读:
    新概念第二册(1)--英语口语听力课1
    外企面试课程(一)---熟悉常见的缩略词
    公司 邮件 翻译 培训 长难句 结课
    workflow
    公司 邮件 翻译 培训 长难句 20
    公司 邮件 翻译 培训 长难句 19
    Engineering Management
    公司 邮件 翻译 培训 长难句 18
    公司 邮件 翻译 培训 长难句 17
    第14.5节 利用浏览器获取的http信息构造Python网页访问的http请求头
  • 原文地址:https://www.cnblogs.com/jiangbei/p/7751747.html
Copyright © 2011-2022 走看看