浅谈自己学习设计模式的感受

对于开发工作者的世界,不管是开发讨论会上还是学习交流会上,更或者面试的时候,当提及设计模式,都会或多或少的让别人高看你一眼。为什么它会有这么强大的魅力呢!


有些人说,主要是因为设计模式太抽象,不好理解,不好运用。有的人觉着,设计模式很好,而且实际运用起来也能减少很多问题。也有人觉着,设计模式就是纯理论的,让人学习起来头疼。在各种言论中,我第一次接触设计模式这个名词是:我之前参加过一个架构师给我们上过一次设计模式的课程。其实我对设计模式认知的也不多,今天也就不具体去说哪种设计模式,我带着大家去理解一下设计模式到底是什么和它能解决哪些问题。


一. 什么是设计模式:

很多学习过的设计模式的人可能会说,设计模式就是一套被反复使用,多数人知晓的,经过分类的,代码设计经验的总结。咋一看,哇,好高深,压根看不出来设计模式到底是什么。其实举一个例子,大家应该就可以明白了,就像人们去爬一座没有开发的山,一开始人们都是根据自己的意识去爬,毫无规划,但是有心的爬山人爬了很多遍,将每次的路线进行规整,最后被修路工人修出来给游客经常走的可以观光很多风景的山路,就是我们设计模式。很多游客走这条路既看到很多重要的风景,又方便行走,解决很多问题。后面爬山的人如果知道有这条路的会直接走这条路,但是对这个路根本不知道的,估计还是会根据自己的意识在山上乱走,当然也不可避免会有一些人想另辟蹊径的。

 




二. 设计模式到底能解决哪些问题呢?

其实使用设计模式就是为了提高代码的重用性,使代码维护起来更方便,让人们看代码的时候更轻松。


三. 设计模式的6大原则的

1.开闭原则,勃兰特.梅耶在《面向对象构造》一书中说过:Software entities should be open for extension,but closed for modification。意思是说软件应该对扩展开放,对修改关闭。其实就是说,软件在进行新增功能的时候,不能去修改原有的代码,而去新增代码,实现灵活去除和新增功能,不影响原有的功能。目的就是为了更好的扩展和升级维护。


2.依赖倒转原则

针对接口而不是针对实现编程。类似于计算机,无论是CPU,主板,内存,还是硬件都是针对接口设计的;如果针对实现来设计,内存就要对应到某个品牌的主板,但是如果计算机需要换内存的话,那主板就要换掉了,这样想来会不会很尴尬呢。

所以这个原则就是降低模块和模块间的耦合。


3.接口隔离原则

使用多个隔离的接口,比使用单个接口要好。例如,每个平台都有登陆和注册,这两个都是用户模块,写成两个接口比写成一个接口好很多。这个例子可能不是很凸显,但是可以让人们更快的了解这个意思。这个原则就是说要提高程序设计的灵活性。


4.迪米特法则

其也叫作最少知道原则,我觉着直接叫模块独立原则更好,更直观,但是我说了不算哦。其实意思就是说,系统中一个模块和其他模块尽量少的发生联系,实现系统模块的相对独立。网上有这个说法,一个类公开的public属性或方法越多,修改时涉及的面也就越大,变更引起的风险扩散也就越大。这个原则也就是说降低类之间的耦合,减少对其他类的依赖。


5.单一职责原则

意思就是说,一个类只负责一个功能领域中的相应职责,或者可以定义为:就一个类而言,应该只有一个引起他变化的原因。目的就是要将类的复杂性降低,可读性提升,可维护性


高内聚,低耦合

这个原则一看6个字,相当高深,其实他的意思是:模块内的功能要内聚的越高越好,模块与模块间的联系越少越好。解释了一下,貌似懂了点,耦合的强弱还是取决于模块间接口的复杂程度,进入或者访问一个模块的点以及通过接口的数据。


6.里氏代换原则

里氏代换原则是继承复用的基石,只有当衍生类可以替换掉基类,软件的功能不受到影响时,基类才能真正的被复用,而衍生类也能在基类的基础上增加新的行为。我们举一个这样例子,给大家看看,比如鸡,是禽类,它的衍生类有鸭,鹅等等,如果衍生类换成了基类的原生方法,如把禽类换成了猫科,那么软件的功能就受到了影响,就不符合里氏代换原则。


这就是设计模式的6大原则,咋一看,太深了,看不懂,解释了一遍后,懂了这6个原则,可是仔细想想也就是纸上谈兵,真正的还是不知道这是怎么用的。设计模式就是一个纯理论的,是经过总结经验集成的一本书,具体的使用还得以后大家在写程序中细心点,仔细观察总结


以上就是我一开始学习设计模式的感觉和开始学习的点,我觉着还是先了解它是干什么的有什么用才会有继续学习下去的理由,当然了,每个人有各自的学习方法,不能一概而论,也希望每个学习设计模式的人在学习过程中可以收获丰富。





  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值