码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式——门面模式

时间:2018-03-31 19:36:56      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:art   src   img   集合   rgs   缺点   客户   com   logger   

  • 定义

    一个子系统的外部与内部的通信必须通过一个统一的对象进行。门面模式提高一个高层次的接口,使得子系统更易实现。

门面对象就是一个提供外部访问子系统的一个接口,除了这个接口不允许有任何访问子系统的行为发生。

  • Facede门面角色

    -客户端调用门面方法,通过该角色将客户端的请求委派到相应的子系统中,改系统没有实际的业务逻辑。

  • subsystem子系统角色

    可以同时拥有一个或者多个子系统。每个子系统都不是一个单独的类,而是一个类的集合。子系统不知道门面的存在,对于子系统而言,门面仅仅是一个客户端而已。

  • UML图

    技术分享图片

技术分享图片

    /**
 * cpu子系统类
 * @author Administrator
 *
 */
public class CPU 
{
    public static final Logger LOGGER = Logger.getLogger(CPU.class);
    public void start()
    {
        LOGGER.info("cpu is start...");
    }
    
    public void shutDown()
    {
        LOGGER.info("CPU is shutDown...");
    }
}
    public class CPU 
{
    public static final Logger LOGGER = Logger.getLogger(CPU.class);
    public void start()
    {
        LOGGER.info("cpu is start...");
    }
    
    public void shutDown()
    {
        LOGGER.info("CPU is shutDown...");
    }
}
    public class Disk
{
    public static final Logger LOGGER = Logger.getLogger(Disk.class);
    public void start()
    {
        LOGGER.info("Disk is start...");
    }
    
    public void shutDown()
    {
        LOGGER.info("Disk is shutDown...");
    }
}
    public class Memory
{
    public static final Logger LOGGER = Logger.getLogger(Memory.class);
    public void start()
    {
        LOGGER.info("Memory is start...");
    }
    
    public void shutDown()
    {
        LOGGER.info("Memory is shutDown...");
    }
}
    public class Computer
{
    public static final Logger LOGGER = Logger.getLogger(Computer.class);
    
    private CPU cpu;
    private Memory memory;
    private Disk disk;
    public Computer()
    {
        cpu = new CPU();
        memory = new Memory();
        disk = new Disk();
    }
    public void start()
    {
        LOGGER.info("Computer start begin");
        cpu.start();
        disk.start();
        memory.start();
        LOGGER.info("Computer start end");
    }
    
    public void shutDown()
    {
        LOGGER.info("Computer shutDown begin");
        cpu.shutDown();
        disk.shutDown();
        memory.shutDown();
        LOGGER.info("Computer shutDown end...");
    }
}
    public class Cilent {
    public static final Logger LOGGER = Logger.getLogger(Cilent.class);
    public static void main(String[] args) 
    {
        Computer computer = new Computer();
        computer.start();
        LOGGER.info("=================");
        computer.shutDown();
    }

}
  • 门面模式优点:

    1.减少系统之间相互依赖。想要访问子系统就必须经过门面对象。
    2.提高灵活性,子类系统可以根据需求变更改变。
    3.只能同过门面模式访问,可以通过门面对象设置权限。

  • 门面模式缺点

    1.不符合开闭原则,对修改关闭,对扩展开放。一旦出现问题就必须修改门面角色代码。

设计模式——门面模式

标签:art   src   img   集合   rgs   缺点   客户   com   logger   

原文地址:https://www.cnblogs.com/boycelee/p/8683579.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!