这个学期学习完设计模式的课程后,已经等不及了,于是开始写博客。我不是想说我写得多好哈,只是做个总结,让大家可以参考。若有错误,请大家指出哈。
设计模式定义、作用、意义:
定义:软件设计模式是对软件设计经验的总结,是对软件设计中反复出现的设计问>题的成功解决方案的描述。四元素描述:名称、问题、解决方案、效果
设计模式主要有以下作用:
(1) 重用设计,重用设计比重用代码更有意义,它会自动带来代码的重用。
(2) 为设计提供共用的词汇,每个模式名就是一个设计词汇,其概念使得程序员间的交流更加方便。
(3) 在开发文档中采用模式词汇可以让其他人更容易理解你的想法,理解为什么你会这样做,你都做了些什么。编写开发文档也更加容易。
(4) 应用设计模式可以让重构系统变得容易,可确保开发正确的代码,并降低在设计或实现中出现错误的可能性,还可以为重写其他应用程序提供很好 的系统框架。
(5) 正确使用设计模式,可以节省大量的时间。
意义:在于设计复用。设计模式可以使设计者更加方便地借鉴或直接使用已经过证实的成功设计方案,而不必花费时间进行重复设计。总之,设计模式可以帮
助设计者更快、更好地完成软件系统的设计工作。
经典 23 种设计模式分类
经典的《设计模式》一书归纳出 23 种设计模式,本文按《易学设计模式》一书归纳分类如下:
1.创建型模式
社会化的分工越来越细,自然在软件设计方面也是如此,因此对象的创建和对象的使用分开也就成为了必然趋势。因为对象的创建会消耗掉系统的
很多资源,所以单独对对象的创建进行研究,从而能够高效地创建对象就是创建型模式要探讨的问题。这里有 6 个具体的创建型模式可供研究,它们分别是:
简单工厂模式(Simple Factory);
工厂方法模式(Factory Method);
抽象工厂模式(Abstract Factory);
创建者模式(Builder);
原型模式(Prototype);
单例模式(Singleton)。
ps:严格来说,简单工厂模式不是 GoF 总结出来的 23 种设计模式之一
2.在解决了对象的创建问题之后,对象的组成以及对象之间的依赖关系就成了开发人员关注的焦点,因为如何设计对象的结构、继承和依赖关系会影响到后续程 序的维护性、代码的健壮性、耦合性等。对象结构的设计很容易体现出设计人员水平的高低,这里有 7 个具体的结构型模式可供研究,它们分别是:
外观模式(Facade);
适配器模式(Adapter);
代理模式(Proxy);
装饰模式(Decorator);
桥模式(Bridge);
组合模式(Composite);
享元模式(Flyweight)。
3.行为型模式
在对象的结构和对象的创建问题都解决了之后,就剩下对象的行为问题了,如果对象的行为设计的好,那么对象的行为就会更清晰,它们之间的协作效率就会 提高,这里有 11 个具体的行为型模式可供研究,它们分别是:
模板方法模式(Template Method);
观察者模式(Observer);
状态模式(State);
职责链模式(Chain of Responsibility);
命令模式(Command);
访问者模式(Visitor);
调停者模式(Mediator);
备忘录模式(Memento);
迭代器模式(Iterator);
解释器模式(Interpreter)。
设计原则
1.单一职责原则。
2.开放-封闭原则。
3.依赖倒转原则。
接来下的文章中,我将会继续介绍常用的几种设计模式。