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

 

这个作业属于哪个课程2022软件代码开发技术
这个作业要求在哪里 读书笔记——软件设计原则、设计模式
这个作业的目标 学习软件设计原则和设计模式并做读书笔记

参考书籍

《设计模式—可复用面向对象软件的基础》

 

读书笔记

一、软件设计原则

1、开闭原则

开闭原则(Open-Closed Principle, OCP)是指一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。所谓的开闭,也正是对扩展和修改两个行为的一个原则。强调的是用抽象构建框架,用实现扩展细节。可以提高软件系统的可复用性及可维护性。开闭原则,是面向对象设计中最基础的设计原则。

2、依赖倒置原则

依赖倒置原则(Dependence Inversion Principle,DIP)是指设计代码结构时,高层模块不应该依赖底层模块,二者都应该依赖其抽象。抽象不应该依赖细节;细节应该依赖抽象。通过依赖倒置,可以减少类与类之间的耦合性,提高系统的稳定性,提高代码的可读性和可维护性,并能够降低修改程序所造成的风险。

3、单一职责原则

单一职责(Simple Responsibility Pinciple,SRP)是指不要存在多于一个导致类变更的原因。

4、接口隔离原则

接口隔离原则(Interface Segregation Principle, ISP)是指用多个专门的接口,而不使用单一的总接口,客户端不应该依赖它不需要的接口。这个原则指导我们在设计接口时应当注意一下几点: 1、一个类对一类的依赖应该建立在最小的接口之上。 2、建立单一接口,不要建立庞大臃肿的接口。 3、尽量细化接口,接口中的方法尽量少(不是越少越好,一定要适度)。 接口隔离原则符合我们常说的高内聚低耦合的设计思想,从而使得类具有很好的可读性、可扩展性和可维护性。

5、迪米特法则

迪米特原则(Law of Demeter LoD)是指一个对象应该对其他对象保持最少的了解,又叫最少知道原则(Least Knowledge Principle,LKP),尽量降低类与类之间的耦合。

 

二、软件设计模式(仅介绍自己常用的)

1,工厂方法模式(Factory Method Pattern)的用意是定义一个创建产品对象的工厂接口, 将实际创建工作推迟到子类中。

2,抽象工厂模式(Abstract Factory Pattern)的意图是提供一个创建一系列相关或者相互依 赖的接口,而无需指定它们具体的类。

3,建造者模式(Builder Pattern)的意图是将一个复杂的构建与其表示相分离,使得同样的 构建过程可以创建不同的表示。

4,原型模式(Prototype Pattern)是用原型实例指定创建对象的种类,并且通过拷贝这些原 型创建新的对象。

5,单例模式(Singleton Pattern)是保证一个类仅有一个实例,并提供一个访问它的全局访 问点。

6,适配器模式(Adapter Pattern)是将一个类的接口转换成客户希望的另外一个接口。使得 原本由于接口不兼容而不能一起工作的那些类可以一起工作。

7,外观模式(Facade Pattern)是为子系统中的一组接口提供一个一致的界面,此模式定义 了一个高层接口,这个接口使得这一子系统更加容易使用。

8,命令模式(Command Pattern)是将一个请求封装为一个对象,从而使你可用不同的请 求对客户端进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。

9,观察者模式(Observer Pattern)定义对象间的一种一对多的依赖关系,当一个对象的状 态发生改变时,所有依赖于它的对象都得到通知并被自动更新。

10、状态模式(State Pattern)就是对象的行为,依赖于它所处的状态。

 

三、运用经历

往前自己的代码编写中,都没有注意自己的代码架构方面的合理性,因为那时都只是写一些小功能,没有在整体上作考虑,等到真正下手去写游戏的整体框架时才吃了大亏,于是就去补了设计模式相关的知识。

设计模式在我做游戏中的运用,首先是单例模式。我通常会把一些游戏功能的管理器作为一个单例,例如游戏模式管理器、对象池管理器、游戏状态管理器,战斗管理器,UI管理器等。运用单例模式,可以让其他类更加容易调用这些管理器的相关的功能,而且还能保证整个游戏只有那么一个唯一的管理器,不会发生相关的冲突。但这样的话,可能会使一个管理器功能太多,让其体量过于庞大。于是我又开始着手把大单例分解成几个小单例,特别是用资源类型代码文件作为单例,避免了因场景切换导致管理器丢失的问题。

还有就是状态模式,我运用其知识,编写了动作游戏的人物状态机和回合制RPG中的回合状态机。首先每个状态都有一个基类,分为进入该状态、该状态运行中、退出该状态3个阶段,每个阶段都有对应这种类型的功能和处理,每个状态的转换条件同样都是一个类。这些转换条件和状态全部由一个人物的状态机持有,并进行同一管理和运行。如果有想新加入的状态功能、状态或者转换条件,可以直接编写新的然后加入到状态机的关系列表、数组、字典中,不用影响以前写的效果,耦合更松。

 

 

posted @ 2022-03-05 20:21  Jimoa  阅读(96)  评论(0)    收藏  举报