设计模式学习与使用杂谈之前言

前言 

       工作也快两年了,一直在学习和尝试的使用设计模式,工作的两年中,发现很多同事或者朋友慢慢对设计模式失去了兴趣,或许是因为我们在急急忙忙的快速写代码,只有少量时间让我们快速写代码,完成业务需求即可,没有多少时间让我们去思考,或许是因为生硬的套用设计模式,弄得代码不伦不类,或许还有其他的原因。我也学习设计模式有一段时间了,阅读了几本书,在此就把个人的浅显见解和感悟写了出来。

 

       问题1:设计模式到底是什么?

 

       Christopher Alexander说过:每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心

       换句话说:设计模式只是我们解决某类问题的方案的核心或者模板。既不是唯一的一种方案,也不是最终的方案.在GOF的《设计模式》一书中,也从来没有说过设计模式是解决某类问题的唯一方案和最终方案。而书中的模式结构图也只是其中的一种结构或者说是核心结构而已,我们实在不应该生硬的套用设计模式的结构图来写代码。

       设计模式是重构的目标.换句话说在设计初期不应该大量的使用设计模式,因为需求是在变的,我们为了实现变化的需求,为了让代码优美健壮,我们通过不断的重构,当重构的代码接近于某一种设计模式时,我们在使用该模式。

       上面说过设计模式是一种解决方案或者方案的核心,那么任何人都应该有属于自己的设计模式,这些属于自己的设计模式,是由自己的编程习惯,思维方式,对问题的了解程度等等决定的。

       另外在面向对象设计中,有几个原则(下文详述),而设计模式也可以看做是遵守面向对象设计原则的一种解决方案,它体现了面向对象设计的特性。

 

            问题2:面向对象设计的原则是什么?

 

            主要的几个原则:SRP(单一职责原则),OCP(开发-封闭原则),LSP(Liskov替换原则),DIP(依赖倒置原则),ISP(接口隔离原则).我们解决某类问题的时候,使用简单方便的方案并且符合以上原则(当然并不是所有的原则都会符合)就是好的解决方案,而这种解决方案并不一定是23种设计模式的一种。再简单的说:我们在解决问题时,符合面向对象设计的高内聚,低耦合的方案就是好的方案,不一定必须套用设计模式.而要想达到以上的要求,必须对面向对象有正确深入的理解,这也是灵活运用设计模式而且不会被设计模式桎梏的基础.如果你对面向对象设计理解的不深,那么学习设计模式的时候,要多进一步理解,而不是一味的死记硬背设计模式的结构图。 

 

        问题3:学习设计模式到底应该学习什么?


        学习思维方式,更加深入的理解面向对象的设计,不是为了记住那些结构图,因此学习设计模式的时候,不要一味的看代码和结构图,如果我们根据设计模式文字描述部分提出的问题,能够提出自己的解决方案以及结构图,在与设计模式的解决方案进行对比,这样比我们背诵那些结构图收获的多的多。在解决现实中的问题时,一定要根据实际需求,提出合适的解决方案。


     问题4:学习和使用设计模式比较好的习惯。

     

    每天都有一段时间进行重构,同时要使用测试驱动重构。

     

 

 

猜你喜欢

转载自717189149.iteye.com/blog/1507990