设计模式---可复用面向对象软件的基础 阅读笔记(一)

                                                                    设计模式---可复用面向对象软件的基础 阅读笔记(一)

           扯些淡:为什么会读这本书,有什么样的意义。目的是为了站在更高层次上去看编码,而且在做的也是产品,对于不想只做个简单的、无脑的码农掌握软件的设计模式也成为了必经之路了。在阅读笔记中会结合自己在目前的工作中的问题来探讨。

         关于书的定位:1、复用 2、面对象软件 3、基础

        复用:是我们作为一个软件开发者一直追求的目标和评价系统的标准。用最少的代码做更多的事。

        面向对象软件:我开发使用的是Java,这个不用说了。

        基础:这说明我们在阅读本书后只能掌握基础的内容,更多的是通过实践来积累和验证。

         本次阅读的是前言部分,阐述的重点是:

         1、为什么要使用设计模式,设计模式为什么而存在?

         2、什么是设计模式?

       这两个问题也正是我心中的疑惑。

      答:在整个面向对象系统中,我们追求的是写最少的代码,完成较好的功能,而且在实际的工作中我们也希望系统的扩展性是比较强的,这里结合我自己的项目中问题来阐述。目前的项目需要支持三个数据源,我开始的时候写好支持单个的数据源但是在增加第二个、第三个数据源时发现核心的代码是比较臃肿,代码需要修改的地方是非常多的,把原来的代码几乎重新写了一遍。那么问题就是:如果再次增加一个数据源,我的代码是不是又要再次的重写。经过和组长的沟通,他提出的解决方案是:既然你的工程是依据数据源改变而改变的,那么为什么不将整个工程拆分,平铺上几个类。这是我完全没有想到的一种模式,因为我是根据面向过程的思维来解决的,用了if-else来判断(好low)。好了,我举这个例子的目的是想说明当我再次做同样的问题,我不要再次去寻找解决方案,修改大量的代码就可以完成。

    其实上述内容是在说明一个问题:复用、灵活的重要性,

   回到为什么使用设计模式?

   作者使用对比内行,有经验的开发者和没有经验的开发者之间的对比说明这个问题的。是的,此时再来看一个问题,经验者的工资为什么明显高于应届生的工资。我们在对于问题解决时通常的想法是:先使用以前的成功的案例来解决这个问题,如果不行就再次分析和实验来解决该问题。设计模式之所以存在的原因是:在面向对象软件设计的时候遇到的问题会是相同的,我们是可以用自己以前的成功案例来解决。但是这里就会有一个新的问题的引出:对于在设计过程中问题的把握和解决方案的优劣的评价。你以前的方案针对这个问题是最优的吗?这个问题与你之前遇到的问题是一样的吗?真的是没有区别的吗?这是在 深入阅读本书的过程中应当注意的,这种模式解决的是什么问题,为什么要使用这种模式?是不是也可以用另外一种模式来替代?不能替代的原因是什么?模式与模式之间的比较?

   总结:1、在面向对象软件设计时,通过大量的实践发现有些问题是可以用相同的方案来解决。(模式产生的原因)---多说一句,其实在其他的领域也是存在“模式”的,这是一种统计分析的过程,也是一种经验的积累的过程。使用合适的模式可以提高生产效率。

   2、新的问题提出:模式选择标准或者说是使用依据的建立。

   在阐述了为什么使用设计模式之后,作者也说明了重要的问题,本书为什么会写,为什么要读?是将自己的在设计过程中遇到的问题和解决方案记录下来是一非常非常赞的一种方式(我一直都非常赞赏这种做法,因为我一直都这做,好记性不如烂笔头,而且对于编程的实践性非常强,可能刚刚你的解决方案在下一秒你就会忘记,我一直都喜欢做记录,各种记录)。作者是将自己在面向对象软件设计经验作为设计模式记录下来。

    书中是没有介绍关于并发或分布式或实时程序、特定领域的设计模式,这是在告诉我们本书的使用范围,但是我个人认为:在书中我们是学习每个模式产生的过程,这个过程包含这个模式怎么产生的,怎样定义的,发展历程。这样能够使得思想的迁移,有利于创新,灵活的应用设计模式。

第二个大的问题是:什么是设计模式?

这是激动人心的部分。书中以城市和建筑模式来类比,说明设计模式,是一个非常宽泛的领域,再次引申我们可以说对于日常中的生活思考和了解是有助于我们在工作中分析和解决问题的。

我在阅读完设计模式的四个要素之后个人的理解是:模式,是针对问题提出合理的解决方案。不能脱离该问题空谈模式。

怎样来对于这四个因素来定位呢?---我们将会使用这四个因素来比较每个设计模式,确定模式之间区别和联系。

我们说,对于模式的选择是我们解决当前问题的关键,因为那会给我们提供解决的方案。我们可以通过这四个方面来对于每个模式有充分的理解和把握。而合理的设计模式是相比较而言的,没有最优的模式,只有比较合适的模式,合适的解决方案,那么我们就可以通过这四个因素来分别的比较每个模式。

设计模式有四个基本的要素:

1、模式名称

这是助记符,描述该模式的场景下的问题、解决方案和效果,同时方便交流和书写文档。

2、问题

不用多说了,这个非常重要的和关键性因素。引用书中的话语是:“描述了应该何时使用模式”。个人的理解是,借用爱因斯坦的一句话是:提出问题要比解决这个问题更为重要。这里已经体现这个因素的重要性了。对于每个模式中的问题的研究,将有利于我们对于模式的灵活应用,帮助我们来解决新的问题。

3、解决方案

“描述了设计的组成成分,它们之间的相互关系及各自的职责和写作方式”。解决方案的体现是我们对于软件系统的设计,那么关键就是设计的组成成分和每个部件的关系、职责和写作方式。

4、效果

关于效果,是我们设计最终关注的非常重要的话题。关键点是:如何评判模式的效果,即我们应当建立什么样的标准来评判这套设计方案的优劣。书中列举了:在该模式下系统的时间、空间、灵活性、扩充性、可移植性来作评判的标准。

总结:

在阅读完前言后,我已经迫不及待的想阅读接下来的章节,因为在了解为什么会有这本书和为什么会有设计模式这么一个话题之后,真的会产生这样的想法。原因:这本书会给你提供你在面向对象软件系统设计遇到的问题提供解决的方案或者可以借鉴的解决方案,其实最终的状态是通过研究这些已有的方案发展历程来解决自己的问题。

对于设计模式的再定位:

没有阅读之前,我会觉得这样的书往往是如网上的所说是扯淡,装逼用的,但是我个人不这么认为,我更想用一个时髦的词汇来解释设计模式,“套路”。既然是“套路”,那么肯定就会具有一般性,不排除个性化了。

扯淡:

其实有一个非常前沿的方向就是模式识别。联想到这个话题是想说模式(套路)存在的一般性和可以从中借鉴一些思想来更好完成面向对象软件系统的设计。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值