设计模式通俗概述

导读:本篇文章讲解 设计模式通俗概述,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

设计模式七大原则

1) 总原则——开闭原则:一个软件实体,如类、模块和函数应该对扩展开放,对修改关闭

2) 单一职责原则:一个类应该只有一个发生变化的原因。

3) 里氏代换原则:所有引用基类的地方必须能透明地使用其子类的对象。

4) 依赖倒置原则:1.上层模块不应该依赖于底层细节;2.抽象不应该依赖于具体/细节,细节应该依赖于抽象

5) 接口隔离原则:类间的依赖关系应该建立在最小的接口上(不依赖不需要的接口)

6) 迪米特法则/最少知识原则:只与你的直接朋友【成员变量、方法参数、方法返回值中的类】交谈,不跟“陌生人”【局部变量、临时变量】说话。(对自己所依赖的类知道越少越好,有效降低耦合度)

7) 合成复用原则:尽量使用对象组合/聚合(关联),而不是继承关系达到软件复用的目的。

设计模式三大类

创建型模式(Creational)、结构型模式(Structural)、行为型模式(Behavioral)

1 创建型模式

对类的实例化过程进行抽象,将软件模块中对象的创建和使用分离

1.1 简单工厂模式

应用实例:工厂提车,无需管车如何做出来,但是要说明需要哪辆车(参数)才可获得。

1.2 工厂方法模式

应用实例:工厂提车,无需说明哪辆车,工厂自主选择生产哪辆车,并且扩展灵活。

1.3 抽象工厂模式

应用实例:给某软件换主题皮肤,改了不同主题相应的一系列控件(按钮、文本框、下拉框)皮肤都会改变。

1.4 建造者模式

应用实例:自行组装电脑,电脑城(工厂)提供CPU、内存、硬盘主机和显示器,如果要装服务器可以不要显示器、如果家庭电脑可以都要,用户自行组装选择。

1.5 原型模式

应用实例:复制操作

1.6 单例模式

应用实例:资源管理器、菜单界面有且只有一个

2 结构型模式

关注对象的组成以及对象间的依赖关系,描述如何将类或者对象结合在一起形成更大的结构,就像搭积木,通过简单积木的组合形成复杂、功能强大的结构。

2.1 适配器模式

应用实例:在接口不一的情况下,适配转换调用现成已有的算法或者类,达到复用。

2.2 桥接模式

应用实例:彩笔和蜡笔的故事,两个不同维度变化的类。

2.3 组合模式

应用实例:文件夹、QQ群等分层树形结构

2.4 装饰模式

应用实例:给一个对象添加额外功能,如最初消息提醒仅仅发出声音,现在添加在提醒同时要闪烁灯光。

2.5 外观模式

应用实例:隐藏一系列复杂操作(子系统),提供一键操作(一个简单接口)来实现,如一键开机,电脑会自动进行硬件检查和软件启动。

2.6 享元模式

应用实例:一个资源被多个对象共享,如数据库的数据池。

2.7 代理模式

应用实例:

1) 远程代理:客户端需要访问远程主机中的对象,如JAVA RMI

2) 虚拟代理:快捷方式(用一个消耗资源少的对象来代表消耗资源多的对象,如快捷方式在桌面文件夹内占用资源很小,但双击也能方便我们快速打开软件实现功能)

3) 保护代理:需要控制一个对象的访问权限,如论坛已注册用户和游客发表评论权限不同

4) 缓冲代理:为某一个频繁访问的操作结果提供临时存储空间,以供多个客户端共享访问。

5) 智能应用代理:为一个对象的访问提供一些额外的操作,如日志记录、事务处理。

3 行为型模式

关注于对象的行为问题,在不同对象之间划分责任和算法的抽象化,不仅关注类和对象的结构,而且重点关注它们之间的相互作用

3.1 职责链模式

应用实例:try-catch异常捕获处理机制,异常被对应catch,若类型不一致,传递到下一个catch。(注意,由于存在一个try语句的异常最终未被任何catch语句处理的情况,即一个请求可能最终不被任何处理者对象接受并处理,故是不纯的职责链模式。)

3.2 命令模式

应用实例:类似开关(一个键位开电灯,一个键位开风扇,也可以更换开关的键位功能,如开空调)实现命令发送者和请求接收者解耦。可以支持撤销、恢复、命令队列以及宏命令操作。

3.3 解释器模式

应用实例:用到编译原理的知识,如解释0和1的或运算和与运算。

3.4 迭代器模式

应用实例:迭代遍历一个集合中的内容。

3.5 中介者模式

应用实例:MVC框架,其中C(控制器)就是M(模型)和V(视图)的中介者;以前发文件要一个个发,利用群聊(中介)达到一呼百应的结果。

3.6 备忘录模式

应用实例:实现撤销保存的操作,游戏存档,浏览器页面后退,数据库事务管理。

3.7 观察者模式

应用实例:红灯亮了,两个观察者做出反应:行人停,车辆行。

3.8 状态模式

应用实例:游戏中用户角色等级有入门、熟练、高手和骨灰级(4个状态),不同级别胜利和失败的积分判定加成不同(各个状态对应的操作大同小异)。

3.9 策略模式

应用实例:旅行出行方式[抽象策略类](自行车[具体策略类]、汽车、飞机)

3.10 模板方法模式

应用实例:造房子时地基、走线、水管都一样直接拿来套用(父类已经实现好的具体方法)即可,只有在建筑的后期才有加壁橱加栅栏(具体需要子类实现的方法)等差异;

3.11 访问者模式

应用实例:类结构稳定,但是操作变化可使用该模式。如公司结构很稳定,老板舍不得花钱招人,总共就那么3个人,还是3种角色,即只有3个元素。公司老板想法多,这就要求这3个人承担各种新技能,即不断的给元素增加新的算法。

参考:

清华大学出版社-图书详情-《Java设计模式》 (tsinghua.edu.cn)

快速记忆23种设计模式 – 知乎

秒懂设计模式之访问者模式(Visitor Pattern) – 知乎

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/91858.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!