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

    模式介绍

    外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。

    模式优点

    1、松散耦合,外观模式松散了客户端与子系统的耦合关系,让子系统内部的模块能更容易扩展和维护。
    2、简单易用,客户端不再需要了解子系统内部的实现,也不需要跟众多子系统内部的模块进行交互,只跟门面类交互就可以了。
    3、更好的划分访问层次,通过合理使用外观模式,可以帮助我们更好地划分访问的层次。

    模式缺点

    1、不符合开闭原则,如果要改东西很麻烦,继承重写都不合适。

    使用场景

    1、当有许多复杂的模块或子系统时,需要向外提供统一访问的模块,这时候就可以用外观模式。
    2、前提是模块或者子系统相对独立。

    系统建模

    1、电脑开机或者关机,需要调度其他组件开或关。

    系统实现

    /**
     * 电脑内存
     */
    public class Memory {
        private static Memory memory= new Memory();
        private Memory(){};
    
        public static Memory getInstance(){
            return memory;
        }
    
        public void open(){
            System.out.println("内存起来了!");
        }
    
        public void close(){
            System.out.println("内存关闭了!");
        }
    }
    
    /**
     * 电脑硬盘
     */
    public class Disk {
        private static Disk disk= new Disk();
        private Disk(){};
    
        public static Disk getInstance(){
            return disk;
        }
    
        public void open(){
            System.out.println("硬盘起来了!");
        }
    
        public void close(){
            System.out.println("硬盘关闭了!");
        }
    }
    
    /**
     * 电脑CPU
     */
    public class CPU {
        private static CPU cpu= new CPU();
        private CPU(){};
    
        public static CPU getInstance(){
            return cpu;
        }
    
        public void open(){
            System.out.println("CPU起来了!");
        }
    
        public void close(){
            System.out.println("CPU关闭了!");
        }
    }
    
    /**
     * 电脑门面类
     */
    public class ComputerFacade {
        private CPU cpu = CPU.getInstance();
        private Memory memory = Memory.getInstance();
        private Disk disk = Disk.getInstance();
    
        public void openComputer() {
            disk.open();
            memory.open();
            cpu.open();
        }
    
        public void closeComputer() {
            disk.close();
            memory.close();
            cpu.close();
        }
    }
    
    /**
     * 客户端
     */
    public class Cliant {
        public static void main (String args[]){
            ComputerFacade facade = new ComputerFacade();
            facade.openComputer();
            facade.closeComputer();
        }
    }
    
    结果:
    硬盘起来了!
    内存起来了!
    CPU起来了!
    硬盘关闭了!
    内存关闭了!
    CPU关闭了!
    
  • 相关阅读:
    normalize.css介绍和使用,normalize与CSS Reset的区别
    解决在Windows10没有修改hosts文件权限
    定时器
    常见代码题
    BFC与margin重叠
    清除浮动的方法以及优缺点
    面向对象的理解
    左边固定右边自适应
    正则
    《STL源码剖析》——第一、二、三章
  • 原文地址:https://www.cnblogs.com/feiqiangsheng/p/12115130.html
Copyright © 2011-2022 走看看