`
hyj1254
  • 浏览: 340097 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

近期学习新得--重构/设计模式

阅读更多
之前对于设计模式的理解就是减少变化点,并以此判断模式是否适用得当。一个问题来了,假如只是转移而没有减少变化点,那还有必要使用该模式吗?
    比如策略模式,如不使用它,单纯用if/else,变化点不会更多。策略无论增、减、改,两者都只需要修改一处。区别只有一个,使用了模式后一旦需求变化,改起来“貌似”更容易,毕竟人家把代码分成一小块一小块,且建立了良好的封装,可读性更强;如果涉及的策略众多,算法更复杂,它的价值就更大。但说不使用就不符合“开闭原则”,使用后才符合,我不能认同,使用之前需要修改现有代码,使用之后照样要修改,且修改的地方不比原来少,区别只是难易程度。
    “可读性更强”也应该是设计模式的价值之一,否则在此例中大可以只写一个类,里面只有一个方法,却可以干所有的事情。这大概就是策略模式的价值,也是其他类似封装的价值。
     再谈下一个。
     本人虽在设计模式方面尚属才疏学浅,但也感觉到玩转设计模式,其实就是要玩转OO的几大特性,要深刻理解它们的作用,做到活学活用、“不拘于物,草木竹石均可为剑”。
     当然了,知道独孤求败厉害是一回事,学不学他的功夫又是一回事。下面在下就献丑谈一谈近期对方法“封装”的理解。
     1、最直白的作用:解释一段代码的功能,比如将一大段布尔判断提取出来,实现从“怎么做”到“做什么”的语义转变;即使只有这一个地方用也值得。当然前提是方法命名的功力到位。
     2、有利于功能复用。消除重复代码;方法提取粒度越小就越有可能实现复用。
     3、解耦。封装可能变化的部分,避免外界直接对其进行访问。
     4、增加代码可读性。由于方法提取充分,命名恰当,使得原始方法不会太长,且逻辑清晰。
     不足之处还请指正。
0
0
分享到:
评论

相关推荐

    Refactoring To Patterns《重构与模式》英文版

    **模式导向的重构**是指一系列低级别的重构操作序列,这些操作可以使设计师安全地向设计模式靠拢或远离设计模式。这种方式结合了重构和设计模式的优点,为软件开发人员提供了一种更有效的方法来改善现有代码的设计。...

    重构与模式pdf

    《重构与模式pdf》这本书是IT领域特别是软件开发和设计模式学习中的经典之作。它不仅深入浅出地讲解了设计模式的基本概念,还通过实际案例分析,帮助读者理解如何在项目中灵活应用这些模式,从而提升代码质量和系统...

    二十三种设计模式【PDF版】

    为能和大家能共同探讨"设计模式",我将自己在学习中的心得写下来,只是想帮助更多人更容易理解 GoF 的《设计模式》。由 于原著都是以C++为例, 以Java为例的设计模式基本又都以图形应用为例,而我们更关心Java在中间件等...

    学习心得--C++学习经典

    14. **面向对象编程原则与设计模式**:学习并应用面向对象编程的原则(如封装、继承、多态)和设计模式(如工厂模式、单例模式),可以使代码结构更加清晰、易于扩展和维护。 15. **资源管理与优化**:了解并应用...

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

    - **代码重构:** 当现有代码存在冗余或不易维护的情况时,应用设计模式可以有效地改进代码结构。 - **性能优化:** 通过使用特定的设计模式,可以在不影响功能的前提下提高系统的性能。 - **模块化设计:** 设计...

    设计模式(Patterns in Java)

    为能和大家能共同探讨"设计模式",我将自己在学习中的心得写下来,只是想帮助更多 人更容易理解GoF 的《设计模式》。由于原著都是以C++为例,以Java 为例的设计模式 基本又都以图形应用为例,而我们更关心Java 在...

    《信息化教学及教学设计》学习心得.pdf

    《信息化教学及教学设计》的学习心得深深启发了我对现代教育方式的理解。信息化教学不仅是一种技术的应用,更是一种教育理念的革新。它强调以学生为中心,借助信息技术的力量,创造更为生动、互动的学习环境,促进...

    《重构-改善既有代码的设计》电子书以及总结的书中源码

    电子书《重构-改善既有代码的设计+中文版.pdf》提供了全面的理论和实践指导,涵盖了重构的多个方面,如识别代码坏味道、选择合适的重构模式以及如何安全地执行重构。书中详细阐述了各种重构技术,如提取方法、移动...

    java的一些学习心得

    8. 设计模式:在Java开发中,理解并运用设计模式(如工厂模式、单例模式、观察者模式等)可以提高代码的复用性和可维护性。 9. Java Swing和JavaFX:这两是Java提供的图形用户界面(GUI)工具包,用于创建桌面应用...

    [视觉计算论坛SIGVC.BBS]_Deep Learning(深度学习)学习心得资料

    这种逐层抽象的方式使得深度学习能够处理复杂的数据模式,而不需人为设计复杂的特征工程。 【浅层学习与深度学习】的区别在于网络的深度。浅层学习通常指的是只包含一层或两层隐藏层的神经网络,而深度学习则具有更...

    DataONTap学习心得

    《DataONTap学习心得》 DataONTap是NetApp公司的一种操作系统,专为网络存储解决方案设计,具有高效、可扩展的特性。本文将深入探讨DataONTap的核心组件、功能以及其在不同存储场景中的应用。 首先,DataONTap的...

    java学习心得

    ### Java学习心得与最佳实践详解 #### 隐藏数据的重要性 - **基本原则**:“所有数据都应该隐藏在所在的类的内部。”这句话强调了封装的概念。在Java中,这意味着使用`private`关键字来限制类的成员变量的可见性。...

    web前端实习心得体会(6篇).docx

    本文总结了 Web 前端实习的心得体会,涵盖了技术文档的重要性、踏实的精神、根底和潜力的重要性、HTTP 协议的了解、设计模式的学习、需求和设计的了解、产品经理的软件迭代规律、交互设计和 UI 的学习、网络协议和...

    web前端实习心得体会.docx

    同时,需要学习设计模式和其他相关技术,以便与产品打交道。 年轻的工程师需要更多地了解需求和设计、产品经理更要懂得软件迭代规律。对于前端工程师来说,需要多学习交互设计和 UI,多了解网络协议和软件迭代模型...

    程序心得-面试攻略,好书推荐

    "读好书推荐"文档中可能会列举一些经典编程书籍,如《代码大全》、《重构:改善既有代码的设计》、《设计模式:可复用面向对象软件的基础》等,这些书籍能帮助你形成良好的编程习惯,理解软件设计原则,并提升代码...

    软件设计师 中级工程师

    3. 书籍阅读:经典的软件工程书籍,如《设计模式:可复用面向对象软件的基础》、《重构:改善既有代码的设计》等,能帮助你深化理论理解。 4. 实战项目:参与开源项目或者个人项目,将理论应用于实践,锻炼解决问题...

    读《修改代码的艺术》有感

    "二十三种设计模式迷你手册.chm" 这个文件则是设计模式的速查指南。设计模式是解决常见软件设计问题的模板,它们为复杂性提供了结构。在处理遗留代码时,应用合适的设计模式可以提高代码的可复用性和可扩展性。例如...

    TDD之Swing一个另类的计算器实现心得

    5. **设计模式**:可能提到了MVC(模型-视图-控制器)模式,将业务逻辑、用户界面和数据分离。 6. **异常处理**:在计算器实现中如何处理可能的错误或无效输入。 7. **代码重构**:随着测试的通过,作者可能对代码...

    2013 android经典实例及赚钱心得

    4. **Android应用设计**:实例中可能包含了各种设计模式,如MVP(Model-View-Presenter)或MVVM(Model-View-ViewModel),这些都是构建可维护和可扩展应用的重要框架。 5. **盈利心得**:这部分内容可能涵盖了应用...

Global site tag (gtag.js) - Google Analytics