软件体系结构实验:设计模式应用与重构

1 下载量 41 浏览量 更新于2024-06-22 收藏 2.32MB DOC 举报
本次实验是《软件体系结构》课程中的设计模式实验,主要针对软件工程1307班的谭淇蔚同学进行。实验二着重于设计模式的应用,旨在通过实践提升学生对面向对象设计原则的理解和应用能力,以及熟练使用PowerDesigner工具和至少一种面向对象编程语言(未明确指出,但常见的是Java、C++或Python等)来实现常见的设计模式。 实验的核心内容围绕一个图形库API展开,该API提供多种矢量图模板,允许用户创建不同类型的显示图形。原始设计中,图形库的类结构存在以下问题:图形的创立和使用紧密耦合,导致代码冗长且难以维护。为了改进,实验要求遵循面向对象设计原则进行重构: 1. 遵循单一职责原则,将图形的创立封装到一个单独的工厂类(如ShapeFactory),这样客户类无需直接操作图形实例,只需与工厂交互,降低了耦合度。 2. 使用工厂方法模式,创建一个通用的接口或抽象类(Shape)作为基类,图形类(如Circle、Triangle)继承自这个基类,这样添加新图形时只需扩展基类即可,保持了开闭原则,即“开箱即用,关闭修改”。 3. 采用抽象工厂模式,创建一个图形库抽象工厂(AbstractGraphicsFactory),根据用户需求生成具体的图形类实例,进一步实现了代码复用和扩展性。 4. 单例模式可能用于确保图形库只有一个实例,避免资源浪费或冲突,提高性能。 5. 适配器模式用于将现有的接口或类转换成客户端期望的接口,以解决图形库与客户类接口不匹配的问题。 6. 组合模式用于组合多个对象来表示单个组件,这可能在创建复杂图形结构时被使用。 7. 外观模式可以隐藏图形库内部的复杂性,提供一个简单的统一接口供客户类使用,使得客户无需了解底层细节。 8. 代理模式用于控制对图形对象的访问,例如,可能在图形加载或初始化时引入代理,以便缓存或处理并发问题。 在实验报告中,学生需要展示重构后的类图,并详细解释在设计过程中运用了哪些设计模式,以及如何优化了系统的可维护性和扩展性。同时,还需要分析和讨论重构前后代码的差异,以及这些设计模式如何提升了软件体系结构的质量。最后,实验成绩由批阅教师根据学生的代码实现、设计思路和报告质量来评定。整个实验强调了实际操作和理论知识的结合,对软件工程专业学生来说是一次宝贵的学习和实践机会。