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

  • 相关阅读:
    day-16 json模块,pickle模块,collections模块,openpyxl模块
    day-15时间模块,datetime模块,random随机模块
    day-5OS与操作系统交互的模块,sys模块,加密模块
    day14内置函数,函数递归,模块
    day13三元表达式,列表生成式,生成器表达式,匿名函数,内置函数
    day13面向过程编程
    day13生成器
    叠加装饰器,
    迭代器
    day11---装饰器
  • 原文地址:https://www.cnblogs.com/hellokitty2/p/10716658.html
Copyright © 2011-2022 走看看