• 设计模式之-外观模式


    外观模式是为了解决类与类之家的依赖关系的,像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类,这样就起到了解耦的作用。



  • 相关阅读:
    1085 PAT单位排行
    安装MongoDB并且添加用户
    同源政策,发送请求时携带cookie信息
    博客园文章编辑时实现语法高亮
    template中的时间格式如何修改
    Node模块下载路径的更改设置
    JavaScript--遍历
    JavaScript--作用域
    JavaScript--arguments
    JavaScript--apply&call
  • 原文地址:https://www.cnblogs.com/lewskay/p/6409082.html
Copyright © 2020-2023  润新知