简单快速理解设计模式结构

工厂模式

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kuV2eJOM-1595474319296)(在这里插入图片描述
“工厂模式结构图”)]

工厂模式特性

  1. 优点
    + 不用关心对象的具体实现,只需要知道该工厂可以生产相应的对象即可。
    + 如上图所示,如果需要添加其他的具体工厂类,就可以继承,并且新增相应的具体对象类,进行组合就好,不用换更改其他的类,符合开闭原则。

  2. 缺点

    • 相对来说较为繁琐,增加一个新的工厂类,需要增加两个具体的类。具体的工厂类只会生产唯一的对象

抽象工厂模式

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-V05fQlbX-1595474319297)(在这里插入图片描述
)]

个人理解:

  • 抽象工厂就是一种有多个对象家族,相较于工厂模式来说,它可以有多个方法,每个方法就可以生产不同的对象,可以有多个不同的具体工厂类,至于到底生产哪个对象,由具体工厂决定,在产品族不会大的改动的情况下,这个是非常好用的,符合开闭原则(但是,如果是需要扩展产品族的,那肯定改动就非常大了
  • 如果仅仅某个产品族的增加了一款产品,那么就只需要多一个具体工厂类就好了
  • 有M 个产品等级,就应该有M个具体实现工厂,每个具体的工厂中,需要实现不同的产品族的生产任务

建造者模式

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-x8U2Gt6U-1595474319299)(在这里插入图片描述
在这里插入图片描述

结构图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oSCP9HLe-1595474319302)(在这里插入图片描述
)]

应用场景

建造者(Builder)模式创建的是复杂对象,其产品的各个部分经常面临着剧烈的变化,但将它们组合在一起的算法却相对稳定,所以它通常在以下场合使用。

  • 创建的对象较复杂,由多个部件构成,各部件面临着复杂的变化,但构件间的建造顺序是稳定的。
  • 创建复杂对象的算法独立于该对象的组成部分以及它们的装配方式,即产品的构建过程和最终的表示是独立的。

个人理解

建造者模式,见名就知道,是可以建造出一个对象的,而这个对象是多种多样,但是都是同一类别下的,都需要相同的组件或者步骤才能够生产出来,就如同汽车制造厂一样,能够生产不同的车,车的组成是一样的,但是相同零部件又分不同品质的,不同的制造车间,生产的车的质量是不一样,而指挥者只需要命令某个车间出车,具体怎么生产的细节,是不需要知道的,有高档车,经济型等等。因为生产某产品,需要特别多的组件,而且该产品是基本不变的,就可以使用建造者模式。

建造者模式和工厂模式连用,是非常好的。

适配器模式

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-17ciM6F7-1595474319303)(在这里插入图片描述
)]

适配器模式主要还是为了解决三方接口参数类型不匹配吧;新旧系统接口不一致。

适配器还是依赖其他类对象来完成相应的功能。

装饰模式

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sv0uZvrh-1595474319304)(在这里插入图片描述
)]

桥接模式

模式定义

将抽象和实现剥离,使用组合关系来代替继承关系,从而降低抽象和实现的耦合

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lgEwttIq-1595474319307)(在这里插入图片描述

桥接和适配联用,个人理解: 桥接采用了组合实现,扩展抽象化角色的operation方法是调用了concreteImplementor 具体的实现化角色,但如果具体的实现化角色可能需要适配其他的功能,那么就可以使用一个适配器来继承具体实现化角色,这样就可以使用到adaptee 适配者来实现(扩展也是可以的)。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值