设计模式—六大原则之(道之禅)

国产禅(zen)道(tao)-部署 禅道(zentao) ​ 禅道是第一款国产的优秀开源项目管理软件。先进的管理思想,合理的软件架构,简洁实效的操作,优雅的代码实现,灵活的扩展机制,强大而易用的api调用机制,多语言支持,多风格支持,搜索功能,统计功能等,利用禅道可以很好的进行项目的管理。 1、下载 zentao 源码包 wget http://dl.cnezsoft.com/zentao/9.8.2/ZenTaoPMS.9.8.2.zbox_64.tar.gz 解压到 /usr/src 目录下; 不需要编译安装 tar -zxf Z 阅读详情

1、模式介绍 

       模式是指从生产经验中和生活经验中经过抽象和升华提炼出来的核心知识体系,也可以看作是解决某一类问题的方法。把解决某类问题的方法总结归纳到理论高度,就是模式。模式是集体智慧的结晶,它概括了相关行业中经验丰富的从业者所应用的所有概念和方法。


       设计模式(Design Pattern)也是一种模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。其作用是可重用代码,让代码更容易被他人理解,保证代码的可靠性。(后续的序列文章就不介绍模式了)




2.1、设计模式的基本要素与分类

     2.1.1、基本要素:

     模式名称:助名词、用一两个词来描述模式的问题、解决方案和效果。
     问题:描述了应该在何时使用模式。
     解决方案:描述了设计的组成成分,它们之间的相互关系及其各自职责和协作方式。 
     效果:描述了模式应用的效果及使用模式应权衡的问题。


     2.1.2、模式分类

     创造型模式:主要描述何时创建对象。
     结构型模式:主要描述如何实现类和对象的组合。

     行为型模式:主要描述类或对象怎样交互及其怎样分配职责。




3、面向对象的设计六大原则

         理解面向对象的主要机制以及面向对象的设计模式,才能更好的领会设计模式的本质和并灵活使用。



4、六大原则之单例模式(因为单纯,所以快乐)

        单一职责原则(SRP):指的是一个类应该仅有一个引起它的变化的原因。

        程序设计人员大都清楚应该写出高内聚、低耦合的程序,但是很多耦合常常发生在不经意之间,其原因就是:职责扩散、就是某个职责被划分为颗粒度更细的多个职责了。就会造成高耦合、代码僵硬化。因此,应该把不同的职责分开到不同类中。




    

        例如:ATM系统的查找用户模块所示初始设计方案(图1)

        

        图1  初始设计方案结构图

       在图1中,AtmData类中的方法说明如下:getConnection()方法用于连接数据库,find()用于查询所有的用户信息,display()用于显示用户金额。

      对其进行重构:

      在图1中,ATMData类承担了太多的职责,既包含与数据库相关的方法,又包含与用户的查找和显示信息相关的方法。如果在其他类中也需要连接数据库或者使用find()方法查询用户信息,则难以实现代码的重用。无论是修改数据库连接方式还是修改图表显示方式都需要修改该类,它不止一个引起它变化的原因,违背了单一职责原则。因此需要对该类进行拆分,使其满足单一职责原则,类ATMData可拆分为如下三个类:

      (1) DbUtil:负责连接数据库,包含数据库连接方法getConnection();

      (2) AtmDbDAO:负责操作数据库中的Customer表,包含对Customer表的改查等方法,如find()和display()。


    重构后的结构如图2所示:


图2


      单一原则的优点:

             1、降低类的复杂度,明确类的定义。

             2、提高可读性,降低了复杂性,提高了维护性。

             3、降低变更引起的风险,变更是不可减少,如果接口的单一原则做好,一个接口的修改只需修改对应的实现类,对其他接口无影响。这对系统的扩展性,维护性都有非常大的帮助。


      单一原则的缺点:

              1、增加类的编写麻烦。





5、六大原则之依赖倒置(约定之战)

        依赖倒置含义(DIP):是高层模块不应该低层模块,两者都应该依赖其抽象。抽象不应该依赖细节,细节不应该依赖抽象。其实更高的含义就是“面向接口编程—(面向对象设计OOD的精髓之一)”。

        这些含义难于理解,解释一下:每个逻辑的实现都是原子逻辑组成的,不可分割的原子逻辑就是低层模块,原子模块的再组装就是高层模块。在Java中,抽象就是指接口和抽象类,两者不能被实现化。细节就是实现类,实现类可以被实例化。







 

       例如:在一个车场(DriveWork)里有奔驰跑车(Benz),奔驰跑车的钥匙(driver()方法),小明想开奔驰跑车。反正老板不在车场,小明当然可以开奔驰了。



         在上图中,小明只能开奔驰,为啥呢?因为车场只有奔驰车。如果车场进一辆车(特斯拉)跑车,小明想开怎么办?开不了,因为车场没有这个车的钥匙。这就带来问题了。


      重构后的结构所示下图:


       重构后,车场有钥匙了,因为结构改变了。一旦有车进场就必须有钥匙随带,这减少了麻烦。而是小明也可以开特斯拉了。


      依赖倒置原则的优点:

              1、接口或抽象类对实现类进行约束,可以减少需求改变引起的麻烦。

             2、设计优良,结构清晰。

















【设计模式】多维度轻松记住设计模式的六大原则 设计模式的六大原则是构建优秀软件架构的基石,本文通过六种趣味记忆法帮助开发者轻松掌握这些核心原则。文章提供场景联想、图像记忆、谐音口诀等创意方法,让抽象原则变得生动易记。掌握这些原则能显著提升代码质量和可维护性,其中OCP是设计模式的核心目标,其他原则都是实现它的具体手段。 阅读详情

相关推荐

Altium Designer许可证冲突?手把手教你用Windows防火墙彻底禁止AD联网(附详细截图)

本文详细介绍了如何通过Windows防火墙精准管控Altium Designer的网络权限,解决许可证冲突问题。通过配置入站和出站规则,彻底阻断AD的联网行为,提升软件运行效率。适用于需要稳定使用Altium Designer的工程师,附有详细截图和高级验证方法。

weixin_38170137的博客 424

设计模式之禅

1 单一职责原则 SRP There should never be more than one reason for a class to change.(应该仅有一个原因引起类的变化) 单一职责适用于接口、类、方法。 2 里氏替换原则 Liskov Substitution Principle Functions that use pointers or references to base ...

chitoseyono的博客 266

4.7W防削顶单声道D类音频功率放大器HT6872介绍

HT6872是一款低EMI,防削顶失真,单声道免滤波D类音频功率放大器。在6.5V电源,10%THD+N,4Ω负载条件下,输出4.71W功率,在各类音频终端应用中维持高效率并提供AB类放大器的性能。

weichen_78的博客 4704

设计模式之禅《一》 大旗不挥,谁敢冲锋 ——6大设计原则

设计模式之禅《一》大旗不挥,谁敢冲锋 ——6大设计原则 《一》 六大原则 一:单一职责原则 1、单一职责原则最难划分的就是职责 2、有两个可以变化的原因放到了一个接口中,这就为以后的变化带来了风险。 3、对于单一职责原则,我的建议是接口一定要做到单一职责,类的设计尽量做到只有一个原因引起变化。 禅:不同对象对同一个接口进行调用时,如果其中的某个方法产生不同的实现就应该把他抽离出来形成以自己为中心的新的职责。创建自己的接口时职责一定要清晰清晰!,单一,不要让别人猜测这个方法可能是用来处理什么逻辑的。 二:

shouji6175的博客 579

simulink求解器选择的小tip

给出了simulink选择求解器的一种tip,与积分初值有关。

高能阿博特的博客 2057

SRAM故障排查实战:如何用Nano Prober定位6T存储单元的异常点

本文详细介绍了在SRAM故障排查中,如何运用Nano Prober(纳米探针)技术精准定位6T存储单元的内部异常。面对传统方法难以发现的电性参数漂移(如晶体管阈值电压偏移)或微小物理缺陷,Nano Prober能直接对单个6T单元内的晶体管进行I-V特性测量,结合失效模式分析,有效解决读写错误等疑难问题,是芯片失效分析的关键工具。

v5w6x的博客 668

第二篇博文《“设计模式”的内涵,以及具体设计模式适用问题的隐喻》

<br />我以前觉得自己很聪明,在公司写软件的时候也这么觉得。但是当我作为一名自由职业者写软件的时候,觉得自己很笨,脑子不够用,掉进泥窝里面,怎么也不爬出来。真的<br /> <br />在对客户改变或者增加功能,而我很难甚至无法修改代码时候,让我感到痛苦不堪,对自己能力产生了极大的怀疑,而且心情很糟(我承认我是一个很情绪化的人,这是事实)。<br />但是我既然做了自由职业者,我必须继续干下去,我必须赚钱生活。所以,为了调节心情,我看《道德经》《菜根谭》,寻找让自己心情平复下来的方法。在读了那些书之后,

张清的专栏 811

Dell Precision 7920 Tower开机点不亮?别慌,看电源灯闪烁密码快速定位故障(附BIOS恢复指南)

本文详细解析了Dell Precision 7920 Tower工作站开机点不亮时的电源灯闪烁密码,帮助用户快速定位故障。从内存问题到BIOS恢复,再到CPU配置错误,提供了全面的诊断和修复指南,并附有实用的维护建议和工具推荐。

weixin_30892037的博客 488

设计模式六大原则

文章目录软件设计的六大原则1. 开放-封闭原则2. 单一职责原则举例3. 里氏替换原则4. 依赖倒置原则举例5. 接口隔离原则6. 迪米特原则举例 软件设计的六大原则 设计模式的六大原则 参考URL: https://zhuanlan.zhihu.com/p/92152190 1. 开放-封闭原则 Open-Close Principle(OCP):一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。目的就是保证程序的扩展性好,易于维护和升级。 对于扩展是开放的,对于更改是封闭的。 开放-封闭原则是面向

西京刀客 1万+

从仿真到实物:Realsense D435+ROS2焊接机械臂的视觉标定与数据验证指南

本文详细介绍了如何将Realsense D435相机与ROS2焊接机械臂从仿真环境迁移到实物部署的全过程。通过视觉标定、数据验证和焊接场景优化,确保系统在真实环境中精准可靠。重点讲解了硬件配置、驱动优化、数据一致性验证及焊接应用的特殊处理,为工业自动化开发者提供实用指南。

weixin_28701593的博客 408

HFSS/ADS仿真实操:手把手调优一个2.4GHz SAW滤波器的IDT结构

本文详细介绍了使用HFSS和ADS仿真工具优化2.4GHz表面声波滤波器(SAW)的IDT结构。从材料参数设置到IDT建模,再到参数化扫描与频率调谐,提供了实用的操作步骤和优化技巧,帮助工程师快速掌握SAW滤波器的设计方案与性能调优方法。

weixin_29197835的博客 533

设计模式的六大原则

设计模式是什么 设计模式是一套理论,是软件界的先辈们总结出的一套可以反复使用的经验。它可以提高代码的可重用性,增强系统的可维护性,以及解决一系列的复杂问题。 在学习设计模式之前,先要明白六大设计原则,设计模式是在六大设计原则上的实践。 单一职责原则 单一职责的定义是:应该有且仅有一个原因引起类的变更 单一职责的好处: 类的复杂度降低,实现什么职责都有清晰明确的定义 可读性提高 可维护性提高 变更引起风险降低 在写代码的时候,尽量做到单一职责。但职责的划分很难确认,要根据环境、项目、资源等而定,但

Eamon 931

《C/C++等级考试(1~8级)历届真题解析》专栏总目录

中国电子学会《全国青少年软件编程等级考试》C/C++编程(1~8级)历届真题解析。订阅后可阅读专栏内所有真题解析,真题持续更新中!

人生就是一个不断学习的过程 2万+

六大原则与设计模式

迭代器模式的角色: 1. 迭代器:迭代器定义访问和遍历元素的接口 2. 具体迭代器: 实现迭代器接口,对该聚合遍历时跟踪当前位置 3. 聚合: 聚合实现创建相应迭代器的接口,这个操作是返回具体迭代器的实例。2. 变更引起的风险降低,变更是必不可少的,如果接口的单一职责做得好,一个接口修改只对相应的实现类有影响,对其他的接口无影响,这对系统的扩展性、维护性都有非常大的帮助。使用场景: 1.访问一个聚合对象的内容而无需暴露它的内部表示 2.支持对聚合对象的多种遍历 3.为遍历不同的聚合结构提供一个统一的接口。

fengfeiyeqi的博客 1610

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

《设计模式之禅》观后感-六大设计原则(一)

通过大牛推荐,看了这本《设计模式之禅》书籍,个人将书里的一些重点罗列出来了,如有错误地方,麻烦各位大牛告知。 《设计模式之禅》作者:秦小波 本书是设计模式领域公认的3本经典著作之一,“极具趣味,容易理解,但讲解又极为严谨和透彻”是本书的写作风格和方法的最大特点。第1版2010年出版,畅销至今,广受好评,是该领域的里程碑著作。深刻解读6大设计原则和28种设计模式的准确定义、应用方法和最佳实践,...

搬砖工的博客 871

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Java设计模式六大原则

参考:http://www.uml.org.cn/sjms/201211023.asp 目录 设计模式六大原则(1):单一职责原则 设计模式六大原则(2):里氏替换原则 设计模式六大原则(3):依赖倒置原则 设计模式六大原则(4):接口隔离原则 设计模式六大原则(5):迪米特法则 设计模式六大原则(6):开闭原则 设计模式六大原则(1):单一职责原则 定义:不要存在多于一个...

雪落南城的博客 608

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

设计模式-六大原则

当初作为小白,提到设计模式,就会觉得很高大上,很牛叉。其实,在我们身边,在我们的项目中,设计模式的身影无处不在。然而,什么是设计模式呢?百度解释为:设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。 经验总是值得学习的,特别是对我们编程有极大帮助的设计模式经验。在Java中常见的设计模式有23种,而这23种设计模式都遵循了设计模式的六大原则,这......

笔沫拾光 702

设计模式六大原则的理解

梳理设计模式中的六大原则,阐述依赖倒置原则的含义

蒋大钊的博客 578

设计模式六大原则——SOLID

SOLID 设计模式的六大原则有: Single Responsibility Principle:单一职责原则 Open Closed Principle:开闭原则 Liskov Substitution Principle:里氏替换原则 Law of Demeter:迪米特法则 Interface Segregation Principle:接口隔离原则 Dependence Inver...

落队的飞行兵 1万+
上一篇: SpringMVC稳扎稳打(3)之拦截器
下一篇: Ajax教程
AndyChen9988
博客等级 码龄11年 276粉丝 89原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值