设计模式概述

设计模式是软件开发过程中解决特定问题的一些经验总结。

 

为什么要学习设计模式

 

    记得读研时,啃了几天GoF的《设计模式:可复用面向对象软件的基础》,觉得一头雾水,那时的项目经验比较少,没觉得这么做有什么道理。

 

    后来代码撸多了,觉得到了瓶颈,就又拾起了设计模式。

 

    再次看设计模式,发现目的是好的,但抽象能力不是看几天设计模式就立马提高的,实际上未必遇到这些特定问题,设计模式对自己的代码改善是一个潜移默化的过程。

 

    但有一个意外的优点,理解开源代码结构容易了,很多框架用了大量设计模式

 

设计模式的四个要素:

 

    1. 模式名称

    一般根据模式的问题、解决方案、功能和效果来命名。方便程序员之间交流设计思想。

 

    2. 问题

    问题(Problem)描述了在什么情况下使用该模式。他可能描述了特定的设计问题,比如怎样用对象表示算法。

    描述了导致不灵活设计的类或对象结构,有时还包括使用该模式必须满足的一系列先决条件。

 

    3. 解决方案

    模式问题的解决方案(Solution)描述设计的组成成分、它们之间的相互关系及各自的职责和协作方式。

 

    4. 效果

    描述了模式的应用效果以及使用该模式应该权衡的问题,即模式的优缺点。

 

设计模式分类

 

按照目的分:

    1.创建型模式:用于描述“怎样创建对象”。常见有单例模式、(简单工厂模式)工厂方法模式、抽象工厂模式、建造者模式、原型模式5 种创建型模式。

    2.结构型模式:描述对象的接口和拼接,GoF 中提供了代理模式、适配器模式、桥接模式、装饰模式、外观模式、享元模式、组合模式 7 种结构型模式。

    3.行为型模式:用于描述类或对象之间怎样相互协作责。有模板方法模式、策略模式、命令模式、职责链模式、状态模式、观察者模式、中介者模式、迭代器模式、访问者模式、备忘录模式、解释器模式等 11 种行为型模式。

 

如何学习设计模式:

       1.了解设计模式的六大原则。

       2.对设计模式整体概念有个简单的了解,知道分类,快速刷一遍23种设计模式。

       3.对感兴趣的设计模式精刷,然后再刷同类和相似的模式。

       4.刷到某种设计模式,可以以模式名百度下,看不同人对这种模式的介绍。

           说实在的,好多介绍设计模式的文章,用的例子太简单,和实际项目差别太大,所以多刷几个作者的。

       5.看开源代码如何用这种设计模式的。

       6. <<Head First 设计模式>> 比GoF的趣味性更高,可以先看Head First 设计模式。

       7.多动手。项目中多思考。多看别人优秀设计。

 

最后,不要过度设计,看过新人一个简单任务的python程序写得巨复杂无比,用了继承多态,用编辑器查看时总就跳到基类,给自己增加负担。

 

23种设计模式只是代码设计中特定情景都模版,不要神化,要掌握的是思想,而不是什么都硬要往设计模式上套。

 

Simple is Best。

 

参考资料:

《设计模式:可复用面向对象软件的基础》

《Head First 设计模式》

 

 

posted @ 2020-06-18 11:23  diameter  阅读(61)  评论(0编辑  收藏  举报