zoukankan      html  css  js  c++  java
  • 外观模式

    1.外观模式简介

    外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。属于结构型模式,它向现有的系统添加
    一个接口,来隐藏系统的复杂性。这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用。
    缺点:不符合开闭原则。
    使用场景:为复杂的模块或子系统提供外界访问的模块、子系统相对独立、预防低水平人员带来的风险。在层次化结构中,可以使用外观模式定义系统中每一层的入口。

    2.试验Demo

    interface Chip {
        public void startUp();
        public void shutDown();
    }
    
    /*构建电脑子系统,包含CPU,Memory,Flash等*/
    class CPU implements Chip {
        public void startUp() {
            System.out.println("CPU startUp");
        }
        public void shutDown() {
            System.out.println("CPU shutDown");
        }
    }
    
    class Memory implements Chip {
        public void startUp() {
            System.out.println("Memory startUp");
        }
        public void shutDown() {
            System.out.println("Memory shutDown");
        }
    }
    
    class Flash implements Chip {
        public void startUp() {
            System.out.println("Falsh startUp");
        }
        public void shutDown() {
            System.out.println("Falsh shutDown");
        }
    }
    
    /*提供一个门面类,外界通过它提供的函数来开关电脑内部的各个器件*/
    class ComputerSystem {
        private Chip cpu, memory, flash;
        public ComputerSystem() {
            cpu = new CPU();
            memory = new Memory();
            flash = new Flash();        
        }
    
        void startUp() {
            cpu.startUp();
            memory.startUp();
            flash.startUp();
        }
    
        void shutDown() {
            cpu.shutDown();
            memory.shutDown();
            flash.shutDown();
        }
    
        void startUpFlash() {
            flash.startUp();
        }
    
        void shutDownFlash() {
            flash.shutDown();
        }
    }
    
    public class FacadePattern {
        public static void main(String args[]) {
            ComputerSystem s = new ComputerSystem(); /*这里避免了对电脑的每一个器件的直接操作*/
    
            s.startUp();
    
            s.shutDown();
        }
    }

    参考:http://www.runoob.com/design-pattern/facade-pattern.html

  • 相关阅读:
    oracle安装常见问题
    VM EXSI安装使用
    虚拟机---无法获取所有权
    Http常用状态码
    翻译:CommonJS的wiki
    如何在ie6/ie7/ie8中实现iframe背景透明
    网页版俄罗斯方块
    HTML5之pushstate、popstate操作history,无刷新改变当前url
    我们是如何做好前端工程化和静态资源管理
    dns-prefetch—DNS预解析技术
  • 原文地址:https://www.cnblogs.com/hellokitty2/p/10716658.html
Copyright © 2011-2022 走看看