zoukankan      html  css  js  c++  java
  • 设计模式之-外观模式

    外观模式是为了解决类与类之家的依赖关系的,像spring一样,
    可以将类和类之间的关系配置到配置文件中,而外观模式就是将
    他们的关系放在一个Facade类中,降低了类类之间的耦合度,该
    模式中没有涉及到接口(我们以一个计算机的启动过程为例)

    开机 cpu启动-缓存启动-硬盘启动-开机成功 这种顺序。

    CPU类:
    public class CPU {
    
        public void startup(){
            System.out.println("cpu 启动!");
        }
    
        public void shutdown(){
            System.out.println("cpu 关闭!");
        }
    }

    Memory类:

    public class Memory {
        public void startup(){
            System.out.println("缓存启动!");
        }
    
        public void shutdown(){
            System.out.println("缓存关闭!");
        }
    }

    Disk类:

    public class Disk {
        public void startup(){
            System.out.println("硬盘启动!");
        }
    
        public void shutdown(){
            System.out.println("硬盘关闭!");
        }
    }

    Computer类:

    public class Computer {
        private CPU cpu;
        private Memory memory;
        private Disk disk;
    
        public Computer(){
            cpu = new CPU();
            memory = new Memory();
            disk = new Disk();
        }
    
        public void startup(){
            System.out.println("开机");
            cpu.startup();
            memory.startup();
            disk.startup();
            System.out.println("开机成功!");
        }
    
        public void shutdown(){
    
            System.out.println("关机");
            cpu.shutdown();
            memory.shutdown();
            disk.shutdown();
            System.out.println("关机成功!");
    
        }
    }

    Persion类:(persion类去操作电脑!)

    public class User {
        public static void main(String[] args) {
            Computer computer = new Computer();
            computer.startup();
            computer.shutdown();
        }
    }

    如果没有Computer类,CPU、Memory、Disk他们之间将会相互持有实例,产生关系,这样会造成严重的依赖,

    修改一个类,可能会带来其他类的修改,这不是我们想要看到的,有了Computer类,他们之间的关系被放在了Computer类里,

    这样persion类去操作computer类,这样就起到了解耦的作用。



  • 相关阅读:
    【力扣】767. 重构字符串
    【力扣】976. 三角形的最大周长
    【力扣】164. 最大间距
    【力扣】454. 四数相加 II
    JS中,输出1-10之间的随机整数
    web移动端浮层滚动阻止window窗体滚动JS/CSS处理
    禁止网站F12和查看源码
    苹果浏览器移动端click事件延迟300ms的原因以及解决办法
    jQuery下锚点的平滑跳转
    js实现placehoider效果
  • 原文地址:https://www.cnblogs.com/lewskay/p/6409082.html
Copyright © 2011-2022 走看看