序:
在杰哥和谢老师的交导下,我一个不小心接触到了设计模式。加上自己强烈的求知欲,不小心研究了一下。但是觉得
自己没有掌握到。所以开个博客和网友们探讨探讨。
我们就带着下面的问题来探讨吧(如果有不同意见的网友可以留言):
什么是设计模式?什么时候要用设计模式?为什么要用设计模式?设计模式用来做什么?有哪些设计模式?
1.设计模式简介
设计模式是一套前人总结的解决方案(解决问题的方法,后面"模式"=="设计模式"),就好像36计,72变等。GoF把他
们写出一本书《设计模式》,每个模式都有一个特定的适用场合。在遇到适当的环境使用模式会提高程序的扩张性,如果在
不适当的环境中用模式会怎样呢?举个例吧:A国派15个兵攻打B国,B国有1W兵守城,B国用走为上策。简单点说就是很糟。
所以有这样的一个说法(滥用设计模式)。
2.设计模式的分类
通常说的设计模式是指GoF的《设计模式》一书所说的23种设计模式。23种设计模式又分为3个类别:如下
创建型:单例模式,工厂方法,抽象工厂,原型模式,建造者模式。
结构型:适配器模式,外观模式,代理模式,装饰模式,桥接模式,组合模式,享元模式。
行为型:模板方法模式,策略模式,中介者/调停者模式,观察者模式,访问者模式,命令模式,
责任链模式,状态模式,解析器模式,迭代器模式,备忘录模式,
3.设计模式的四个基本要素
不止这23中模式,任何的模式也有以下四种特点:
*模式名字:每一个模式都有相对应的名字,用于与人讨论。
*适用场景:每个设计模式都一个对应此模式的场景。(认清场景,不适合就不要用。)遇到以后扩展可能要用一个模式,这
时就不知道这么办了。
*好处:可以提高程序的灵活性、扩充性、可移植性和健壮性等。。。
*坏处:任何事都会有反作用的,程序变得复杂;一个模式解决了一个问题有可能会出现另一个问题(模式的不完善)。
4.设计原则
前面说到模式是前人总结的。但前人是怎样发现模式的呢?是基于什么发现模式的呢?答案是设计原则。模式是把
设计原则作为基石而形成的物体。设计原则有7个:
*单一职责原则:类的职责一致。(啊伦:把变与不变的东西分离开来)
*里氏替换原则:子类能替代父类的出现。(继承不要重写方法)
*依赖倒转原则:高模块不应以来底模块,两者依赖抽象。(类的关系终止于抽象)
*接口分离原则:接口的内容量尽量少。(但不能分得太小)
*合成/聚合复用原则:尽量用组合形式扩展而不是用继承。
*迪米特法则/最少知识原则:一个对象内尽量不要出现别的对象,如果要调用就使用第三者。(过度遵循此原则会有大量的第三者)
*开-闭原则:对扩展开放,对修改封闭。对扩展开放,对修改封闭。(这只是一个概念不能完全封闭)
5.设计模式和框架
在这也顺便谈谈对设计模式和框架的看法。设计模式是一套被反复使用、经过分类编目的、代码设计经验的总结。而架构是一个
完成了一部分的程序。
共同点:都是抽象出来的东西!模式是抽象解决事情的方法,架构也是抽象解决问题的方法。但架构的粒度比模式要高。
不同点:构件是代码重用,模式是设计重用,而架构是构件和模式的集合体。既有代码重用也有设计重用;因为构件局限了架构,所以
模式比架构更通用(抽象)。
本人是第一次写这些东东&文化低,可能写得不是很好!希望网友们体谅~~~~谢谢。。