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

  • 相关阅读:
    登录注册数据库建立
    AngularJS学习小结
    响应布局
    JQuery内容从左边框移到右边框
    Jquery图片轮播和CSS图片轮播
    Bootstrap栅格系统
    用Javascript大批量收集网站数据
    如何用CSS快速布局(一)—— 布局元素详细
    怎么应用vertical-align,才能生效?
    line-height系列(二)——对行内元素(文字、图片、兄弟元素)、块级元素设置line-height后的表现
  • 原文地址:https://www.cnblogs.com/hellokitty2/p/10716658.html
Copyright © 2011-2022 走看看