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();
        }
    }

      

    三、改进与思考

      优点

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

  • 相关阅读:
    多项式乘法
    容斥计算多重组合
    D. Tokitsukaze, CSL and Stone Game
    优惠买商品(dp、greedy)
    数星星(单点更新,求前缀和)
    信息推送(单点更新,求前缀和)
    互相送礼物
    Codeforces Round #611 (Div. 3)E. New Year Parties
    多源bfs
    mysql事务和锁
  • 原文地址:https://www.cnblogs.com/jiangbei/p/7751747.html
Copyright © 2011-2022 走看看