之前对于设计模式的理解就是减少变化点,并以此判断模式是否适用得当。一个问题来了,假如只是转移而没有减少变化点,那还有必要使用该模式吗?
比如策略模式,如不使用它,单纯用if/else,变化点不会更多。策略无论增、减、改,两者都只需要修改一处。区别只有一个,使用了模式后一旦需求变化,改起来“貌似”更容易,毕竟人家把代码分成一小块一小块,且建立了良好的封装,可读性更强;如果涉及的策略众多,算法更复杂,它的价值就更大。但说不使用就不符合“开闭原则”,使用后才符合,我不能认同,使用之前需要修改现有代码,使用之后照样要修改,且修改的地方不比原来少,区别只是难易程度。
“可读性更强”也应该是设计模式的价值之一,否则在此例中大可以只写一个类,里面只有一个方法,却可以干所有的事情。这大概就是策略模式的价值,也是其他类似封装的价值。
再谈下一个。
本人虽在设计模式方面尚属才疏学浅,但也感觉到玩转设计模式,其实就是要玩转OO的几大特性,要深刻理解它们的作用,做到活学活用、“不拘于物,草木竹石均可为剑”。
当然了,知道独孤求败厉害是一回事,学不学他的功夫又是一回事。下面在下就献丑谈一谈近期对方法“封装”的理解。
1、最直白的作用:解释一段代码的功能,比如将一大段布尔判断提取出来,实现从“怎么做”到“做什么”的语义转变;即使只有这一个地方用也值得。当然前提是方法命名的功力到位。
2、有利于功能复用。消除重复代码;方法提取粒度越小就越有可能实现复用。
3、解耦。封装可能变化的部分,避免外界直接对其进行访问。
4、增加代码可读性。由于方法提取充分,命名恰当,使得原始方法不会太长,且逻辑清晰。
不足之处还请指正。
分享到:
相关推荐
**模式导向的重构**是指一系列低级别的重构操作序列,这些操作可以使设计师安全地向设计模式靠拢或远离设计模式。这种方式结合了重构和设计模式的优点,为软件开发人员提供了一种更有效的方法来改善现有代码的设计。...
《重构与模式pdf》这本书是IT领域特别是软件开发和设计模式学习中的经典之作。它不仅深入浅出地讲解了设计模式的基本概念,还通过实际案例分析,帮助读者理解如何在项目中灵活应用这些模式,从而提升代码质量和系统...
为能和大家能共同探讨"设计模式",我将自己在学习中的心得写下来,只是想帮助更多人更容易理解 GoF 的《设计模式》。由 于原著都是以C++为例, 以Java为例的设计模式基本又都以图形应用为例,而我们更关心Java在中间件等...
14. **面向对象编程原则与设计模式**:学习并应用面向对象编程的原则(如封装、继承、多态)和设计模式(如工厂模式、单例模式),可以使代码结构更加清晰、易于扩展和维护。 15. **资源管理与优化**:了解并应用...
- **代码重构:** 当现有代码存在冗余或不易维护的情况时,应用设计模式可以有效地改进代码结构。 - **性能优化:** 通过使用特定的设计模式,可以在不影响功能的前提下提高系统的性能。 - **模块化设计:** 设计...
为能和大家能共同探讨"设计模式",我将自己在学习中的心得写下来,只是想帮助更多 人更容易理解GoF 的《设计模式》。由于原著都是以C++为例,以Java 为例的设计模式 基本又都以图形应用为例,而我们更关心Java 在...
《信息化教学及教学设计》的学习心得深深启发了我对现代教育方式的理解。信息化教学不仅是一种技术的应用,更是一种教育理念的革新。它强调以学生为中心,借助信息技术的力量,创造更为生动、互动的学习环境,促进...
8. 设计模式:在Java开发中,理解并运用设计模式(如工厂模式、单例模式、观察者模式等)可以提高代码的复用性和可维护性。 9. Java Swing和JavaFX:这两是Java提供的图形用户界面(GUI)工具包,用于创建桌面应用...
这意味着教师不仅要学习相关的信息技术,还要能够将这些技术有效地融入到教学设计中。 在未来的工作中,我将致力于提升自己的信息化教学能力,以便更好地服务于学生。我相信,通过不断提高自身的信息技术素养和教学...
信息化教学不再是传统教学模式的简单延续,而是对教学过程的全新重构,目的是借助现代科技手段,提高教学的效率和质量,实现教育的个性化和多元化。 在这门课程中,我学习到信息化教学的核心是坚持学生为中心的教学...
这种逐层抽象的方式使得深度学习能够处理复杂的数据模式,而不需人为设计复杂的特征工程。 【浅层学习与深度学习】的区别在于网络的深度。浅层学习通常指的是只包含一层或两层隐藏层的神经网络,而深度学习则具有更...
《DataONTap学习心得》 DataONTap是NetApp公司的一种操作系统,专为网络存储解决方案设计,具有高效、可扩展的特性。本文将深入探讨DataONTap的核心组件、功能以及其在不同存储场景中的应用。 首先,DataONTap的...
### Java学习心得与最佳实践详解 #### 隐藏数据的重要性 - **基本原则**:“所有数据都应该隐藏在所在的类的内部。”这句话强调了封装的概念。在Java中,这意味着使用`private`关键字来限制类的成员变量的可见性。...
本文总结了 Web 前端实习的心得体会,涵盖了技术文档的重要性、踏实的精神、根底和潜力的重要性、HTTP 协议的了解、设计模式的学习、需求和设计的了解、产品经理的软件迭代规律、交互设计和 UI 的学习、网络协议和...
此外,学习设计模式和相关技术也是提升前端开发能力的关键。设计模式能够帮助我写出更具有可维护性和可扩展性的代码,而了解其他相关技术则有助于我更有效地与产品经理、设计师进行沟通协作。 对于年轻的工程师来说...
"读好书推荐"文档中可能会列举一些经典编程书籍,如《代码大全》、《重构:改善既有代码的设计》、《设计模式:可复用面向对象软件的基础》等,这些书籍能帮助你形成良好的编程习惯,理解软件设计原则,并提升代码...
首先,信息化教学设计要求教师对传统的教学模式进行反思和重构,运用多媒体技术将枯燥的知识点转化为生动的学习资源。我开始尝试使用Flash动画和模拟软件来展示课程中的抽象理论,学生反馈这样的教学方式极大地提高...
3. 书籍阅读:经典的软件工程书籍,如《设计模式:可复用面向对象软件的基础》、《重构:改善既有代码的设计》等,能帮助你深化理论理解。 4. 实战项目:参与开源项目或者个人项目,将理论应用于实践,锻炼解决问题...
"二十三种设计模式迷你手册.chm" 这个文件则是设计模式的速查指南。设计模式是解决常见软件设计问题的模板,它们为复杂性提供了结构。在处理遗留代码时,应用合适的设计模式可以提高代码的可复用性和可扩展性。例如...
5. **设计模式**:可能提到了MVC(模型-视图-控制器)模式,将业务逻辑、用户界面和数据分离。 6. **异常处理**:在计算器实现中如何处理可能的错误或无效输入。 7. **代码重构**:随着测试的通过,作者可能对代码...