《Java设计模式及实践》—1.5 设计模式和原则
1.5 设计模式和原则
无论你是在大型团队中工作还是在单人项目中工作,软件开发都不仅仅是编写代码。构建应用程序的方式对软件应用程序的成败有很大影响。当我们谈论一个成功的软件应用程序时,不仅讨论应用程序如何执行它应该做的事情,还讨论在开发它时付出了多少努力,以及它是否易于测试和维护。如果没有以正确的方式完成,那么暴涨的开发成本将会导致没人能接受这个应用程序。
创建软件应用程序是为了满足不断变化和发展的需求。一个成功的应用程序还应该提供一种简单的方法来扩展它以满足不断变化的期望。
幸运的是,我们不是第一个遇到这些问题的人。有一些问题已经被开发人员所发现并总结了解决方案。如果在设计和开发软件时应用一组面向对象的设计原则和模式,则可以避免或解决这些常见问题。
面向对象的设计原则也被称为SOLID。在设计和开发软件时可以应用这些原则,以便创建易于维护和开发的程序。SOLID最初是由Robert C. Martin所提出的,它们是敏捷软件开发过程的一部分。SOLID原则包括单一职责原则、开闭原则、里氏替换原则、接口隔离原则和依赖倒置原则。
除了前面提到的设计原则外,还有面向对象的设计模式。设计模式是可以应用于常见问题的通用可重用解决方案。遵循克里斯托弗·亚历山大的概念,设计模式首先被Kent Beck和Ward Cunningham应用于编程,并于1994年因一本名为《Gang Of Four(GOF)》的书而广为流传。下面我们将介绍SOLID设计原则,接下来的几章将介绍设计模式。
1.5.1 单一职责原则
单一职责原则是一种面向对象的设计原则,该原则指出软件模块应该只有一个被修改的理由。在大多数情况下,编写Java代码时都会将单一职责原则应用于类。
单一职责原则可被视为使封装工作达到最佳状态的良好实践。更改的理由是:需要修改代码。如果类需要更改的原因不止一个,那么每个类都可能引入影响其他类的更改。当这些更改单独管理但影响同一模块时,一系列更改可能会破坏与其他更改原因相关的功能。
另一方面,每个更改的职责/理由都会增加新的依赖关系,使代码不那么健壮,更难以修改。
在示例中,我们将使用数据库来持久保存对象。假设对Car类添加方法来处理增、删、改、查的数据库操作,如图1-9所示。
在这种情况下,Car不仅会封装逻辑,还会封装数据库操作(两个职责是改变的两个原因)。这将使我们的类更难维护和测试,因为代码是紧密耦合的。Car类将取决于数据库,如果将来想要更改数据库系统,我们必须更改Car代码,这可能会在Car逻辑中产生错误。
相反,更改Car逻辑可能会在数据持久性中产生错误。
解决方案是创建两个类:一个用于封装Car逻辑,另一个用于负责持久性。如图1-10所示。
- 点赞
- 收藏
- 关注作者
评论(0)