美文网首页
理解外观模式

理解外观模式

作者: 梦的飞翔_862e | 来源:发表于2018-11-27 12:17 被阅读0次
    概念理解

    外观模式实际上是将系统内部逻辑与客户端调用隔离开,无论系统内部多么复杂, 仅仅暴露出来非常简单的几个接口供客户端调用。外观模式是一种结构型模式。

    外观模式的结构

    考虑一个电脑开关的例子,电脑提供出来的接口是一个打开按钮和一个关闭按钮,至于打开电脑后电脑做什么操作,客户是不知道也不需要关心。


    代码实例
    public class Cpu {
    
        private static final Cpu CPU_INSTANCE= new Cpu();
        private Cpu(){
        }
        public static Cpu getCpuInstance(){
            return CPU_INSTANCE;
        }
        public void start(){
            System.out.println("cpu started");
        }
        public void shutdown(){
            System.out.println("cpu is shutdown");
        }
    }
    
    public class Disk {
    
        private static final Disk DISK_INSTANCE= new Disk();
        private Disk(){
    
        }
        public static Disk getDiskInstance(){
            return DISK_INSTANCE;
        }
        public void start(){
            System.out.println("Disk started");
        }
        public void shutdown(){
            System.out.println("Disk is shutdown");
        }
    }
    
    public class Memory {
    
        private static final Memory MEMORY_INSTANCE= new Memory();
        private Memory(){
    
        }
        public static Memory getMemoryInstance(){
            return MEMORY_INSTANCE;
        }
        public void start(){
            System.out.println("Memory started");
        }
        public void shutdown(){
            System.out.println("Memory is shutdown");
        }
    }
    
    public class ComputerFacade {
        private Cpu cpu;
        private Memory memory;
        private Disk disk;
    
        public ComputerFacade() {
            cpu = Cpu.getCpuInstance();
            disk = Disk.getDiskInstance();
            memory = Memory.getMemoryInstance();
    
        }
    
        public void startCompute() {
            memory.start();
            cpu.start();
            disk.start();
        }
    
        public void shutdownCompute() {
            memory.shutdown();
            cpu.shutdown();
            disk.shutdown();
        }
    }
    
    public class App 
    {
        public static void main( String[] args )
        {
          ComputerFacade facade = new ComputerFacade();
          facade.startCompute();
        }
    }
    
    最小知识原则

    外观模式的设计,遵循的是最小知识原则。最小知识原则的简单理解是,一个类只与直接依赖的类通信。直接依赖的类包括成员和方法参数,不包括局部变量。
    遵循最小知识原则的方法应该调用:
    对象本身
    对象的任何组件
    作为方法参数传递进来的对象
    该方法创建或者实例化的对象

    由此可见,应该避免调用由其他方法返回回来的对象

    优点:外观模式减少了客户端和系统的耦合度,提高了安全性和灵活性
    缺点:外观模式系统内部的设计不符合开闭原则。

    代码源码见https://github.com/jxl198/designPattern/tree/master/facade

    相关文章

      网友评论

          本文标题:理解外观模式

          本文链接:https://www.haomeiwen.com/subject/meqgqqtx.html