设计模式(第十一式:外观模式)

本文介绍了外观设计模式,其要求子系统内外通信通过统一对象,提供高层次接口让子系统更易用。实现包括规定子系统和对外实现。该模式好处是简化外部使用、减少类间依赖、便于维护,但不利于修改内部逻辑顺序,还给出适用场景示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概念:

  外观模式:要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。外观模式提供一个高层次的接口使得子系统更容易使用。看着概念好像很唬人的,看到代码,你会觉得过于简单,没意思。

实现:

  规定子系统

public class NovelBook {
    public void read(){
        System.out.println("小说可以阅读");
    }
}
public class ToolBook {
    public void use(){
        System.out.println("阅读小说需要查工具书");
    }
}

  对外实现

public class Book {
    NovelBook novelBook = new NovelBook();
    ToolBook toolBook = new ToolBook();
    
    public void read(){
        novelBook.read();
        toolBook.use();
    }
}


分析:
  1.这么简单的,我觉得没有必要在写测试和结果了。大概说一下,就是本来如果用到工具书和小说,我们需要分别创建对象,但现在,只需要创建Book对象就可以了。相当于封装了流程在其中。
  2.这个设计模式的好处就式,外部使用时不需要清楚知道内部之间时是怎样的逻辑关系,对外的封装,会负责逻辑顺序。简化了外部使用。
  3.这样做的好处是,减少了类与类之间更多的依赖关系,也更易于逻辑上的维护。但不利于修改内部逻辑顺序,也就是如果逻辑顺序发生变化,只能重写新的逻辑,不能灵活调整逻辑顺序。当然也可以不封装逻辑,只做聚合。
  4.举个例子理解一下,去快餐店买快餐,店铺通常只提供一个收银口和取餐口,你不知道人家里面是怎么处理的。反正就是交了钱等饭就好了,这就是外观模式。
  5.适用场景:
    a.对于固有逻辑的封装,比如报警系统的通知服务
    b.有大量类存在依赖关系,可使用外观模式,也可以选择不对逻辑封装
    ...

转载于:https://www.cnblogs.com/ben-mario/p/10911453.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值