首页 > 其他分享 >设计模式—结构型模式之外观模式(门面模式)

设计模式—结构型模式之外观模式(门面模式)

时间:2023-11-16 20:11:39浏览次数:20  
标签:void 模式 class start 门面 设计模式 public 结构型

设计模式—结构型模式之外观模式(门面模式)

外观(Facade)模式又叫作门面模式,是一种通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。

例子

我们的电脑会有很多 组件,比如CPU、硬盘、内存等等;如果我们电脑需要启动的话,需要挨个去调用每个组件的启动方法;停止逻辑也是一样;我们可以提取到一个组合的类中,提供一个整体的启动方法,直接调用,这就是门面模式的使用。

代码如下:

public class Cpu {
    public void start(){
        System.out.println("CPU启动了");
    }
}
public class Disk {
    public void start(){
        System.out.println("硬盘启动了");
    }
}
public class Memory {
    public void start(){
        System.out.println("内存启动了");
    }
}
/**
 * 门面类
 */
public class ComputerFaced {
    private Cpu cpu;
    private Memory memory;
    private Disk disk;

    public ComputerFaced(){
        this.cpu = new Cpu();
        this.memory = new Memory();
        this.disk = new Disk();
    }

    public void start(){
        this.cpu.start();
        this.memory.start();
        this.disk.start();
    }
}

我们的客户使用,就是如下:

public class FacedTest {
    public static void main(String[] args) {
        ComputerFaced computerFaced = new ComputerFaced();
        computerFaced.start();
    }
}

运行如下:

运行截图

标签:void,模式,class,start,门面,设计模式,public,结构型
From: https://www.cnblogs.com/nicaicai/p/17837161.html

相关文章

  • 面向对象笔记—设计模式
    设计模式一、概念设计模式是一系列在实践中总结出来的可复用的面向对象的软件设计方式设计模式就是描述一个反复出现的问题,以及解决这个问题的方案。可以重复使用这个解决方案而无须再做重复劳动。解决设计问题的固定套路重用,避免代码重复冗余优化体系结构提升系统的可维......
  • 软件设计-职责链模式
    软件设计                 石家庄铁道大学信息学院 实验15:职责链模式本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:1、理解职责链模式的动机,掌握该模式的结构;2、能够利用职责链模式解决实际问题。     [实验任务一]:财务审批......
  • 1.单例设计模式
    单例模式的五种实现方式1、饿汉式(线程安全,调用效率高,但是不能延时加载publicclassImageLoader{privatestaticImageLoaderinstance=newImageLoader;privateImageLoader(){}publicstaticImageLoadergetInstance(){returninstanc......
  • 设计模式-观察者模式
    定义观察者模式(Observer),又叫发布-订阅模式(Publish/Subscribe),定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并自动更新。UML结构图如下:其中,Subject类是主题,它把所有对观察者对象的引用文件存在了一个聚集里,每个主题都可以有任何数量的观......
  • 状态模式
    状态模式1.按照一个营销活动的审核状态进行流转活动编辑,审核,撤销审核,通过,拒绝,关闭,开启,活动中模拟活动的状态的流转2.上代码-基础定义status.java活动中每个状态的定义publicenumStatus{//1创建编辑、2待审核、3审核通过(任务扫描成活动中)、4审核拒绝(可以撤审到......
  • 软件设计模式学习每日总结-第四天
    第四天建造者模式:将一个复杂对象的构建和他的表 建造者模式服务于多个成员的产品,无需用户关注建造的细节。 ......
  • 枚举策略模式
    枚举策略模式将枚举和策略模式相结合,能使代码更加简洁。以下是消息推送相关的案例1、定义消息推送接口packagecom.bitzh.strategy;publicinterfaceMessagePushStrategy{voidpush(Stringcontent);}2、分别创建邮件推送、短信推送和企业微信推送三个类,实现消息......
  • Knative event Brokers and Triggers 事件传递模式实例
    BrokersandTriggers实例说明eventsource:gitlabsource基于MT通道的broker:defaulttriggertrigger-push->sinkevent-display-push过滤条件:dev.knative.sources.gitlab.pushtriggertrigger-tag-push->sinkevent-display-tag_push过滤条件:dev.knative.......
  • 非严格模式下,this有4种绑定机制(默认、隐式、显式、new)
    执行以下选项中的程序,输出结果是undefined的是()Avaro={age:18,a:{fn:function(){console.log(this.age);}}}o.a.fn();BclassAnimal{constructor(color){this.color=color;}getColor(){console.log("animal的颜色是"+this.color)......
  • 非严格模式下color被泄漏到全局作用域中,创建一个全局变量;严格模式下抛出ReferenceErro
    请问在非严格模式下以下JS代码最终的输出是什么?functionchange(obj){with(obj){color='red'}}varbox={size:'15*15'}change(box);console.log(color);AundefinedBnullCredD报错正确答案:C需要明确with会创建一个新的作用域,由于box本身没有......