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

  

三、改进与思考

  优点

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

 

posted @ 2017-10-29 22:46  ---江北  阅读(257)  评论(0编辑  收藏  举报
TOP