作业二:读书笔记----软件设计原则、设计模式

这个作业属于哪个课程 班级的链接
这个作业要求在哪里 作业要求的链接
这个作业的目标 了解并能使用设计原则与设计模式

参考书籍:《软件秘笈:设计模式那点事》

本书在件设计模式概述后,诠释23个软件设计模式,对各种软件设计模式进行系统总结,是各种软件设计模式综合应用。本书作者是郑阿奇。

一、设计原则

设计原则 详解
开闭原则 一个软件实体,如类,模块和函数应该对外扩展开发,对内修改关闭。用抽象构建框架,用实现扩展细节。不以改动原有类的方式来实现新需求,而是应该以实现事先抽象出来的接口(或具体类继承抽象类)的方式来实现。
单一职责原则 一个类只允许有一个职责,即只有一个导致该类变更的原因。如果一个类具有多种职责,就会有多种导致这个类变化的原因,从而导致这个类的维护变得困难。
依赖倒置原则 依赖抽象而不是依赖实现。抽象不应该依赖细节,细节应该依赖抽象。高层模块不能依赖低层模块,二者都应该依赖抽象。
接口分离原则 多个特定的客户端接口要好于一个通用性的总接口。客户端不应该依赖它不需要实现的接口。不建立庞大臃肿的接口,应尽量细化接口,接口中的方法应尽量少。
迪米特法则 一个对象应该对尽可能少的对象有接触,也就是只接触那些真正需要接触的对象。迪米特法则也叫做最少知道原则,一个类应该只和它的成员变量,方法的输入,返回参数中的类作交流,而不应该引入其他的类。
里氏替换原则 所有引用基类的地方必须能透明地使用其子类的对象,也就是说子类对象可以替换其父类对象,而程序执行效果不变。

二、设计模式

有 23 种设计模式。而这些模式可以分为三大类:创建型模式、结构型模式、行为型模式。

创建型模式

1.工厂模式:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。
2.抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
3.单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。
4.建造者模式:将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。
5.原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。

结构型模式

1.适配器模式:将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
2.桥接模式:将抽象部分与实现部分分离,使它们都可以独立的变化。
3.过滤器模式:允许开发人员使用不同的标准来过滤一组对象,通过逻辑运算以解耦的方式把它们连接起来。
4.组合模式:将对象组合成树形结构以表示"部分-整体"的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。
5.装饰器模式:动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更为灵活。
6.外观模式:为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
7.享元模式:运用共享技术有效地支持大量细粒度的对象。
8.代理模式:为其他对象提供一种代理以控制对这个对象的访问。

行为型模式

1.责任链模式:避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。
2.命令模式:将一个请求封装成一个对象,从而使您可以用不同的请求对客户进行参数化。
3.解释器模式:给定一个语言,定义它的文法表示,并定义一个解释器,这个解释器使用该标识来解释语言中的句子。
4.迭代器模式:提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示。
5.中介者模式:用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
6.备忘录模式:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。
7.观察者模式:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
8.状态模式:允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类。
9.空对象模式:一个空对象取代 NULL 对象实例的检查。Null 对象不是检查空值,而是反应一个不做任何动作的关系。这样的 Null 对象也可以在数据不可用的时候提供默认的行为。
10.策略模式:定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。
11.模板模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
12.访问者模式:主要将数据结构与数据操作分离。
三、心得体会
我觉得单例模式是最让我印象深刻的,能够使在整个的软件系统中,对某个类只存在一个对象实例,而且只有一个取得其对象实例的方法;其中又分为饿汉式和饱汉式,对于初次接触设计模式的我而已,可谓是打开了一扇全新的大门。在我写代码的时候,单例模式常常用到,它可以防止其它对象对自己的实例化,确保所有的对象都访问一个实例,并且能够节约资源。在接下来的时间里,熟悉使用其他的设计模式。

截图

posted on   ^-^|  阅读(69)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示