在了解完c#语言之后,开启了设计模式的学习。设计模式里充分展现了面向对象的封装,继承与多态。总共24中模式,各有各自的特色与自己独特的使用环境,面对具体的问题还需要具体的分析,活用这几种模式我们离大神就不远了!
一:什么是设计模式?
设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结.简单的说就是程序人员公认的规则,是在前人的基础之上总结的,应对目前面向对象程序设计的模板.
我的理解:设计模式就像是写实验报告,虽然每一个实验都是不一样的,但是具体的格式是有的,每写一个实验都知道写实验目的,实验材料,实验步骤,实验结果与分析。具有一定的模式,往里面填东西就可以了。
二:为什么使用设计模式?
设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的;设计模式使代码编制真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样.作为一名聪明的程序员应该知道并且熟识.
三:设计模式的内容
设计模式主要根据类与对象的处理方式上分为了创建型设计模式,行为型设计模式,结构型设计模式
创建模式:对类的实例化过程的抽象。一些系统在创建对象时,需要动态地决定怎样创建对象,创建哪些对象,以及如何组合和表示这些对象。创建模式描述了怎样构造和封装这些动态的决定。包含类的创建模式和对象的创建模式。
结构模式:描述如何将类或对象结合在一起形成更大的结构。分为类的结构模式和对象的结构模式。类的结构模式使用继承把类,接口等组合在一起,以形成更大的结构。类的结构模式是静态的。对象的结构模式描述怎样把各种不同类型的对象组合在一起,以实现新的功能的方法。对象的结构模式是动态的。
行为模式:对在不同的对象之间划分责任和算法的抽象化。不仅仅是关于类和对象的,并是关于他们之间的相互作用。类的行为模式使用继承关系在几个类之间分配行为。对象的行为模式则使用对象的聚合来分配行为。
根据我对他们的理解和记忆的方式我分为了一下几种:
设计模式分类 |
设计模式 |
定义 |
工厂姐妹花 |
简单工厂 |
一个工厂对象决定创建出哪一种产品类的实例 |
|
抽象工厂 |
创建了类的接口,接口不指定是哪个类 |
|
工厂方法 |
创建了类的接口,接口由子类决定 |
最强懒汉 |
模板模式 |
子类不改变算法结构重定义步骤 |
|
原型模式 |
原型实例创建对象种类,拷贝原型创建新对象。 |
|
享元模式 |
共享支持大量细粒度对象。 |
|
单例模式 |
类只有一个实例化 |
|
迭代器模式 |
提供一种方法顺序访问一个聚合对象中的各个元素,不暴露对象的内部表示 |
第三者 |
中介者模式 |
用一个中介对象封装一系列的对象交互。子类耦合松散 |
|
解释器模式 |
给定一个语言,定义一种表示,并用解释器解释语言中的句子。 |
|
代理模式 |
为其他对象提供一种代理控制对这个对象的访问。 |
整容大师 |
外观模式 |
子系统的一组接口提供一个一致的界面,定义了一个高层接口。 |
|
装饰模式 |
动态为对象添加一些额外的职责 |
|
适配器模式 |
将一个类的接口转换为另一个接口,使得原本不兼容而可以在一起工作。 |
精明商人 |
观察模式 |
定义一种一对多的依赖关系,让多个观察者对象同时监听所有的观察者对象,使他们能够自动更新自己。 |
|
策略模式 |
定义了子类,封装,相互替换,但不会影响子类的客户。 |
|
职责链模式 |
多个对象都有机会处理请求,从而避免发送者与接受者之间耦合关系,沿着链传递。 |
|
备忘录模式 |
不破坏封装性的前提下, 捕获一个对象内部的状态,在对象之外保存这个状态。 |
设计模式是对于面向对象学习的深入与实践,面向对象有几个原则:开闭原则、里氏代换原则、依赖倒转原则、接口隔离原则、合成/聚合复用原则、最小知识原则也叫迪米特法则。设计模式实现了这些原则,使得我们的程序具有了维护性,复用性。