基础学习-设计模式-结构型

适配器模式

两个不兼容接口之间的桥梁,结合两个接口的功能,使不兼容的接口可以一起工作,主要解决运行中项目的问题

例子:读卡器是内存卡和电脑之间的适配器,美国电压100V,中国电压220V,需要一个适配器进行转换

优点:可以让两个没有关联的类一起运行,提高类的复用,增加类的透明度,灵活性好

缺点:使用过多会使系统零乱

桥接模式

把抽象化与实现化解耦,使得二者可以独立变化,提供抽象化和实现化之间的桥接结构,实现解耦

将抽象部分与实现部分分离,使得他们可以独立变化

例子:墙上的开关,看到的开关是抽象的,不用管怎么实现的,一个类存在两个独立变化的维度,且这两个维度都需要拓展

优点:抽象和实现分离,优秀的拓展能力,实现细节对客户透明

缺点:增加系统的理解与设计难度

组合模式

将一组相识的对象组合成树形结构,当做单一的对象,使得可以像处理简单元素一样处理复杂元素

例子:树形菜单,文件,文件夹管理

有点:高层模块调用简单,节点自由度增加

缺点:叶子和节点声明都是实现类,不是接口,违反了依赖倒置原则

装饰器模式

向现有的对象添加新功能,且不改变其结构,为对象添加额外的职责,不想增加很多子类的情况下拓展类

例子:一幅画可以挂到墙上,在挂墙上之前可以装到画框里。

优点:装饰类和被装饰类可以独立发展,不会互相耦合,可代替继承

缺点:多层装饰比较复杂

外观模式

隐藏系统的复杂性,提供一个访问系统的接口,降低访问复杂系统的内部子系统时的复杂度,简化客户端之间的接口

例子:去医院看病,需要挂号,门诊,开药,缴费,取药,很复杂,提供接待人员处理就很方便

优点:减少系统相互依赖,提高灵活性,提高安全性

缺点:不符合开闭原则,修改麻烦

享元模式

减少创建对象的数量,尝试重用现有的同类对象,没有找到才会创建,避免重新创建

例子:体育馆要举行很多场足球比赛,每场比赛的地点都是体育馆,不会再新创建体育馆

优点:减少对象创建,降低内存,效率提高

缺点:提高系统复杂度,需要分离内部状态和外部状态,而且外部状态固化,不随内部状态变化

代理模式

一个类代表另一个类的功能,要访问的对象在远程机器,直接访问会给系统带来麻烦,与适配器区别,代理不能改变所代理的接口,适配器改变对象的接口,与装饰器区别,代理为了加以控制,装饰器为了增加功能

例子:火车票不一定在火车站买,可以去代售点,代售点就是火车站的代理类

优点:职责清晰,高拓展性,智能化

缺点:可能造成请求变慢,需要额外的工作

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值