![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
软件设计模式
文章平均质量分 65
软件设计模式
俺不会敲代码啊啊啊
这个作者很懒,什么都没留下…
展开
-
抽象工厂模式设计实验
(2)由于同一种风格的具体界面组件通常要一起显示,因此需要为每个组件都选择一个具体工厂,用户在使用时必须逐个进行设置,如果某个具体工厂选择失误将会导致界面显示混乱,虽然可以适当增加一些约束语句,但客户端代码和配置文件都较为复杂。楚锋软件公司的开发人员针对上述要求,决定使用工厂方法模式进行系统的设计。(1)当需要增加新的皮肤时,虽然不需要修改现有代码,但是需要增加大量类,针对每一个新增具体组件都需要增加一个具体工厂,类的个数成对增加,这无疑会导致系统越来越庞大,从而增加了系统的维护成本和运行开销。原创 2024-04-23 20:57:51 · 782 阅读 · 0 评论 -
工厂方法模式设计实验
通过使用简单工厂模式,将日志记录器对象的创建和使用分离,客户端只需使用由工厂类创建的日志记录器对象即可,无须关心对象的创建过程但是,虽然简单工厂模式实现了对象的创建和使用分离,仍然。(1)需要封装日志记录器的初始化过程,这些初始化工作较为复杂,例如需要初始化其他相关的类,还有可能需要配置工作环境(例如连接数据库或创建文件),导致代码较长,如果将它们都写在构造函数中,会导致构造函数庞大,不利于代码的修改和维护。(2)系统扩展不灵活,如果增加新类型的日志记录器,必须修改静态工厂方法的业务逻辑,违反了开闭原则。原创 2024-04-22 17:30:33 · 658 阅读 · 0 评论 -
简单工厂模式设计实验
(2)Chart 类的职责过重,它负责初始化和显示所有的图表对象,将各种图表对象的初始化代码和显示代码集中在一个类中实现,违反了单一职责原则,不利于类的重用和维护,而且将大量的对象初始化代码都写在构造函数中将导致构造函数非常庞大,对象在创建时需要进行条件判断,降低了对象创建的效率。客户端代码通过调用 Chart 类的构造函数来创建图表对象,根据参数 type 的不同可以得到不同类型的图表,然后再调用 display() 方法来显示相应的图表。面对上面的设计,请使用简单工厂模式对上面的代码进行重构。原创 2024-04-15 18:09:27 · 599 阅读 · 1 评论 -
面向对象设计原则实验之“迪米特法则”
在这些窗口中某些界面控件之间存在复杂的交互关系,一个控件事件的触发将导致多个其他界面控件产生响应。在本实例中可以通过引人一个专门用于控制界面控件交互的中间类(Mediator)来降低界面控件之间的耦合度。在引人中间类之后,界面控件之间不再发生直接引用,而是将请求先转发给中间类,再由中间类来完成对其他控件的调用。当需要增加或删除新的控件时只需要修改中间类即可,无须修改新增控件或已有控件的源代码,重构后的结构如图所示。导致在该窗口中增加新的界面控件时需要修改与之交互的其他控件的源代码;也不便于增加和删除控件。原创 2024-04-09 20:51:23 · 676 阅读 · 0 评论 -
软件设计与体系结构知识点
会继续补充内容......原创 2024-04-08 23:15:24 · 1331 阅读 · 0 评论 -
面向对象设计原则实验之“合成复用原则”
如果需要对 DBUtil 的功能进行扩展,可以通过其子类来实现,例如通过子类OracleDBUtil 来连接 Oracle 数据库。系统采用 Access 作为数据库,与数据库操作有关的类(例如 CustomerDAO 类等)都需要连接致据库,连接数据库的方法 getConnection() 封装在 DBUtil 类中,由于需要重用 DBUtil 类的 getConnection() 方法,设计人员将 CustomerDAO 作为 DBUtil 类的子类,初始设计方案结构如下图所示。原创 2024-04-07 17:27:37 · 470 阅读 · 0 评论 -
面向对象设计原则实验之“接口隔离原则”
事实上,有一种特定的相关实践,可以使派生类无需实现这些方法,该实践的做法是把这些接口合并为一个基类,并在这个基类中提供接口中方法的退化实现。在本实例中,由于在接口 CustomerDataDisplay 中定义了太多方法,即该接口承担了太多职责,一方面导致该接口的实现类很庞大,在不同的实现类中都不得不实现接口中定义的所有方法,灵活性较差,如果出现大量的空方法,将导致系统中产生大量的无用代码,影响代码质量。现在,考虑一个这样的实现,TimedDoor,如果门开着的时间过长,它就会发出警报声。原创 2024-04-06 13:10:06 · 733 阅读 · 1 评论