Sunday, January 1, 2017

设计模式:开山篇

你是否整日埋头编码?却忘了跳出来,思考一下如何更高效地编码?那么,是时候了,快给自己充个电,补补设计模式方面的知识吧!

设计模式是什么?

设计模式告诉我们如何组织类和对象以解决某种问题模式不是代码,而是设计问题的通用解决方案。也就是说,设计模式的关注点是如何解决一个问题,而不是具体的步骤,或者详细的实现。这意味着,我们要针对接口编程而非针对实现编程。这到底是啥意思呢?举个例子:

你刚接到了一个任务:你要完成一个问卷管理系统。等等,先别急着编码,先来想想,这个系统需要什么功能。最基本的,一个问卷管理系统需要对问卷进行添加、修改、删除、查询、展示、保存结果。所以,我们可以先定义好上述六个接口。至于每个接口的实现,就不在本文的讨论范围之内了。

接下来,我们来了解几个设计原则。

设计原则

  • 原则一
    找出应用中可能需要变化的代码,将它们独立出来,不要让它们和那些不需要变化的代码混在一起。当你把易变的代码抽出来,保持传入值,返回值不变,不论你对它中间的实现怎么修改,都不会影响到它外部其他代码的稳定性。这样的好处是,可以大大降低代码的耦合性;同时,如果出了bug,可以帮你更快地锁定它。

  • 原则二
    针对接口编程,而非针对实现编程。可以尝试去养成这样一个习惯,在真正编码之前,先抽出时间把问题理清楚,把接口定义好。这并非会浪费你的时间,反而会让你更轻松,更快地完成任务。

  • 原则三
    多用组合,少用继承。这样可以使整个系统更有弹性。同时,通过动态组合对象,当有新的功能出现时,可以添加新代码来实现它,而无需修改现有的代码。这样,可以减少引入bug的几率。

  • 原则四
    为了交互对象之间的松耦合设计而努力。“松耦合”是指对象之间的依赖性很低,即一方改变,另一方所受影响和小或几乎不受影响。

  • 原则五
    类应该对扩展开放,对修改关闭。如果每修改或新增一个功能,你都要在原来的代码上“大动干戈”,极有可能会引发一系列的bug。相反,如果你新开垦了一片土地,无论你想在上面干什么,都可以保证原来的代码不会受到影响。

明天,我们会切入正题,聊一聊几种设计模式。比如观察者模式,工厂方法模式等。

本文原创 https://duckhere.blogspot.com/ ,转载请注明出处。

乌合之众:群体的心理特征

当你一个人时,你有自己的个性和想法;当你是群体中的一员时,你又会展现出什么样的心理特征和行为特征呢?《乌合之众》,一本研究群体心理学的书籍,或许能给我们一些启发。