昨天按照需求把很久以前写的某段delphi代码修改了一下,单个Unit终于突破了5000行,其实花的时间主要是修改之前的"复习"。
出于对今后再次修改的恐惧,也是为了理清思路,把某些方法和变量封装成几个Class。感觉代码干净多了。
今天读了<Java与设计模式>前几章,感觉讲的非常好,之前也看过一些模式的书和博客,具体模式都讲的很清楚,但是总感觉缺了点什么,少了提纲挈领的东西。
摘录一段(可能不是原话):
开闭原则 Open-Closed Principle 简称 OCP:一个类应该对扩展开放,对修改关闭。
开闭原则从另一个角度上讲,其实就是"对可变性的封装原则" Principle of Encapsulation of Variation
意味着两点:
1.一种可变性不应当散落在代码的很多角落里,而应当被封装到一个对象里。同一种可变性的不同表象意味着同一个继承等级结构中的具体子类。继承应当被看作是封装变化的方法,而不应当被看作是从一般对象生成特殊对象的方法。
2.一种可变性不应当与另一种可变性混在一起。
以下的原则其实都是为了实现开闭原则,都附属于开闭原则,是它的工具与手段。
里氏替换原则 Liskov Substitution Principle 简称 LSP :任何父类出现的地方都可以被子类代替。
依赖倒置原则 Dependence Inversion Principle 简称 DIP:要依赖于抽象不要依赖于实现。
解释下为什么叫倒置:底层的接口是由高层提出的,然后由底层实现的,就是说底层的接口所有权在高层,所以叫倒置。
接口隔离原则 Interface Segregation Principle 简称 ISP :为客户端提供尽可能小的接口,而不是一个大的总接口,因为里面的东西客户端可能用不到而被迫实现它。
组合/聚合复用原则 Composition/Aggregation Principle 简称 CARP:尽可能使用组合,聚合达到复用目的而不是使用继承。分清 “has_a” 和 "is_a" 的关系。
迪米特原则 :Law of Demeter 简称LoD,讲的是一个软件实体应当与尽可能少的其他软件实体发生相互作用。
我的理解是,使用设计模式最终目的是为了实现开闭原则,对可变性进行封装。整一堆AbstrctClass和Interface在具体类上面是为了什么?实现复用为了什么?模块的可插拔是为了什么?模块之间解耦为了什么?衍生出的那么多具体设计模式是干什么的?说到底就是为了Open-Closed,节约你的"复习"时间
相关推荐
1.1 什么是设计模式 2 1.2 Smalltalk MVC中的设计模式 3 1.3 描述设计模式 4 1.4 设计模式的编目 5 1.5 组织编目 7 1.6 设计模式怎样解决设计问题 8 1.6.1 寻找合适的对象 8 1.6.2 决定对象的粒度 9 1.6.3 ...
《java设计模式之禅》是一本深入浅出讲解Java设计模式的书籍,作者希望无论读者的编程能力如何,都能从中有所收获。初级程序员可以学习如何编写优秀代码,高级程序员可以全面理解设计模式及Java的高级技巧,而顶级...
1.1 什么是设计模式 2 1.2 Smalltalk MVC中的设计模式 3 1.3 描述设计模式 4 1.4 设计模式的编目 5 1.5 组织编目 7 1.6 设计模式怎样解决设计问题 8 1.6.1 寻找合适的对象 8 1.6.2 决定对象的粒度 9 1.6.3 指定对象...
在进行JAVA与数据库实训项目的过程中,我们不仅学习了理论知识,更重要的是获得了实践操作的宝贵经验。这九篇范文正是这种实践经验的结晶,涵盖了不同阶段、不同层面的学习感悟。每一篇都承载着作者对技术理解的深入...
此外,作者可能还会讨论工厂模式与其他设计模式(如单例模式、建造者模式)的区别和配合使用。 标签中的“源码”可能意味着文章会包含实际的编程示例代码,帮助读者更好地理解工厂模式的工作原理。而“工具”可能是...
Java集合框架的设计模式使得代码更加可读、可维护和高效。2--集合框架.jpg可能是一张详细展示了各种集合类及其关系的图表,帮助学习者理解和掌握这一重要概念。 3. **听课感想.pdf**:这份文件可能是作者在学习Java...
然后在明白了系统的需求基础上需要进一步地设计系统,主要包括软件架构模式、整体功能模块、数据库设计。本项目软件架构选择B/S模式和java技术,总体功能模块运用自顶向下的分层思想。再然后就是实现系统并进行代码...
3. **设计模式与架构**:了解并能够应用设计模式是高级程序员的标志。面试中可能会讨论面向对象的设计原则和系统架构,如单例模式、工厂模式等。 4. **软件工程与敏捷开发**:理解软件开发的生命周期,包括需求分析...
本项目软件架构选择B/S模式和java技术,总体功能模块运用自顶向下的分层思想。再然后就是实现系统并进行代码编写实现功能。通过漫画网站将会使漫画信息管理各个方面的工作效率带来实质性的提升。 本项目在开发和设计...
6.2 感想 这款游戏作为我的毕业设计,是本人目前做过的最有意义的程序,这期间对J2ME的学习,使我又回到了初学PASCAL的时候。 本科期间做过很多课程设计,大多规模很小。在数据库、各种应用软件和游戏中,我仍觉得...
Java JSP + MySQL在线教学系统是一款专为教育领域设计的软件平台,主要用于实现教师与学生之间的教学互动。这个系统包含了多个关键模块,旨在提供全面的教学管理和服务。下面将详细阐述这些模块的功能及其背后的技术...
平台主要使用了java技术, b/s模式和myspl数据库,并对此做了介绍。第三章平台分析;包罗了平台总体结构、对平台的性能、功能、流程图进行了分析。第四章平台设计;对软件功能模块和数据库进行详细设计。第五章平台...
5. **经验总结**:作者对使用JavaCC的感想,包括优点(如强大的扩展性、易于理解和使用)、缺点(如学习曲线较陡峭)以及未来可能的改进方向。 通过研究这个Java写的CMM词法分析器,学生不仅可以加深对编译原理的...
**设计总结和感想体会**:通过这次课程设计,不仅深入理解了面向对象的设计原则和技术,还学会了如何运用UML建模工具和设计模式来解决实际问题。此外,项目的实施过程也锻炼了团队合作能力和解决问题的能力。 #### ...
6. **设计模式**:遵循MVC(Model-View-Controller)设计模式,分离业务逻辑、数据和视图。 7. **开发语言**:使用Java进行后端开发。 8. **浏览器**:推荐使用谷歌浏览器以获得最佳用户体验。 9. **编译器**:使用...
本项目软件架构选择B/S模式和java技术,总体功能模块运用自顶向下的分层思想。再然后就是实现系统并进行代码编写实现功能。 地方美食分享管理方面的任务繁琐,以至于美食机构每年都在地方美食分享管理这方面投入较多...
这不仅仅体现在办公环境的现代化设计上,更深入到公司的企业文化中。公司强调的开放、协作与持续学习的氛围,让我深感兴奋,因为这样的环境能激发每个人的潜力,推动个人与团队共同进步。 在入职培训期间,我有幸...
1. **MVC(Model-View-Controller)设计模式**:这是一种常用的软件架构模式,用于将业务逻辑与表示层分离,使得程序结构更加清晰。模型(Model)负责管理应用程序的数据和业务逻辑;视图(View)负责显示数据;控制...
本项目在开发和设计过程中涉及到原理和技术有: B/S架构、java技术、和 MySQL数据库等等;将按以下章节进行开发设计; 第一章绪论;剖析项目背景与意义,说明研究的内容等。 第二章开发技术。系统主要使用了java技术,...
通过设计使程序模块化,能够更简单的读懂code以及方便维护和测试。整体的App架构选用MVP来搭建,结合最近比较火热的RxAndroid实现观察者事务模式就能够做到模块内部的高聚合和模块之间的低耦合,模块内被的高聚合。 ...