首页 > 其他分享 >[设计模式]外观模式(Facade)

[设计模式]外观模式(Facade)

时间:2023-03-23 21:07:23浏览次数:38  
标签:外观 startup System println computer shutdown Facade 设计模式 public


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

我们先看下实现类:


public class CPU {  
    public void startup(){  
        System.out.println("cpu startup!");  
    }  
      
    public void shutdown(){  
        System.out.println("cpu shutdown!");  
    }  
}


public class Memory {  
      
    public void startup(){  
        System.out.println("memory startup!");  
    }  
      
    public void shutdown(){  
        System.out.println("memory shutdown!");  
    }  
}


public class Disk {  
      
    public void startup(){  
        System.out.println("disk startup!");  
    }  
      
    public void shutdown(){  
        System.out.println("disk shutdown!");  
    }  
}


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("start the computer!");  
        cpu.startup();  
        memory.startup();  
        disk.startup();  
        System.out.println("start computer finished!");  
    }  
      
    public void shutdown(){  
        System.out.println("begin to close the computer!");  
        cpu.shutdown();  
        memory.shutdown();  
        disk.shutdown();  
        System.out.println("computer closed!");  
    }  
}


User类如下:


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


输出:

start the computer!
 cpu startup!
 memory startup!
 disk startup!
 start computer finished!
 begin to close the computer!
 cpu shutdown!
 memory shutdown!
 disk shutdown!
 computer closed!

如果我们没有Computer类,那么,CPU、Memory、Disk他们之间将会相互持有实例,产生关系,这样会造成严重的依赖,修改一个类,可能会带来其他类的修改,这不是我们想要看到的,有了Computer类,他们之间的关系被放在了Computer类里,这样就起到了解耦的作用,这,就是外观模式!

标签:外观,startup,System,println,computer,shutdown,Facade,设计模式,public
From: https://blog.51cto.com/u_6813689/6145933

相关文章

  • [设计模式]代理模式
    代理模式就是多一个代理类出来,替原对象进行一些操作,比如我们在租房子的时候回去找中介,为什么呢?因为你对该地区房屋的信息掌握的不够全面,希望找一个更熟悉的人去帮你做,此处......
  • [设计模式]桥接模式(Bridge) DriverManager
    将抽象化与实现化解耦,使得二者可以独立变化,像我们常用的JDBC桥DriverManager一样,JDBC进行连接数据库的时候,在各个数据库之间进行切换,基本不需要动太多的代码,甚至丝毫不用动,......
  • 20.(行为型模式)java设计模式之迭代器模式
    一、什么是迭代器模式(IteratorPattern)   提供—种方法顺序访问一个聚合对象中各个元素,而又无须暴露该对象的内部实现,属于行为型模式。应用场景:   —般来说,迭......
  • 设计模式之迭代器模式
    个人理解:通过迭代器模式无需知道底层结构,实现数据遍历场景:有书存放在书架上,怎么去取书?代码如下:作用:将书放到书架中,并将书的名字按顺序显示出来示意图:  集合接口总......
  • 小菜学设计模式 工厂设计模式 Simple Factory Pattern
    设计模式的工厂设计模式。工厂模式有以下几种形态:简单工厂(SimpleFactory)模式工厂方法(FactoryMethod)模式抽象工厂(AbstractFactory)模式优点:工厂类含有必要的判断逻......
  • 小菜学设计模式 单一职责原则
    单一职责原则:就一个类而言,应该仅有一个引起它变化的原因!如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。......
  • 前端设计模式——模板方法模式
    模板方法模式(TemplateMethodPattern):定义一个行为的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个行为的结构即可重定义该行为的某些特定步骤。这些步......
  • go 常用设计模式-结构型模式
    本次分享结构型模式,主要包括:代理模式装饰器模式适配器模式享元模式1.代理模式packageproxyimport"fmt"/*结构型模式代理,代表打理,以他人的名义代表委托人......
  • go 常用设计模式-行为型模式
    本次分享的行为型模式,主要包含:责任链模式策略模式观察者模式模板模式访问者模式1.责任链模式packagechainOfResponsibilityimport"fmt"/*行为模式:通过账......
  • 前端设计模式——状态模式
    状态模式(StatePattern):将对象的行为和状态分离,使得对象可以根据不同的状态来改变自己的行为。在前端开发中,可以使用状态模式来管理页面的状态和响应用户的交互。在状态模......