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

  • 相关阅读:
    pyhanlp 实体命名识别
    NABCD需求分析
    源代码
    遇到的问题和解决方法
    运行及总结
    测试与调试
    读《一个程序猿的生命周期》和《人,绩效和职业道德》有感
    面向对象程序设计
    设计类图
    SRS文档
  • 原文地址:https://www.cnblogs.com/hellokitty2/p/10716658.html
Copyright © 2011-2022 走看看