走进“设计模式”

一、设计模式的概念 

设计模式(Designpattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。具体描述如下:

1.设计模式包含一套在理想的软件中解决特定任务的规则;

2.设计模式描述了在特定的设计环境中经常重复出现的特定设计问题的一个解决方案;

3.设计模式是从许多优秀的软件系统中总结出的成功的可复用的设计方案;

4.每一个设计模式描述一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心,使用该方案就不必做重复的劳动了;

5.设计模式提供了相关问题的解决方案.

设计模式使代码编制真正工程化,是软件工程的基石脉络,如同大厦的结构一样。其实我们提高班的培养计划就是一个米老师根据自己的学习经历和多年的教学经验总结出来的一个培养人才的模式。

二、设计原则

面向对象有几个原则:开闭原则(OCP)、里氏代换原则(LSP)、依赖倒转原则(DIP)、接口隔离原则(ISP)、合成/聚合复用原则(CARP)、最小知识原则(PLK,也叫迪米特法则)。开闭原则具有理想主义的色彩,它是面向对象设计的终极目标。其他几条,则可以看做是开闭原则的实现方法。设计模式就是实现这些原则,从而达到了代码复用、增加可维护性的目的。

三、设计模式四要素

1.模式名称(Pattern Name)

它用一两个词来描述模式的问题、解决方案和效果。

2.问题(Problem)

描述了应该在何时使用模式。它解释了设计问题和问题存在的前因后果。

3.解决方案(Solution)

描述了设计的组成成分,它们之间的相互关系及各自的职责和协作方式。

4.效果(Consequences)

描述了模式应用的效果及使用模式应权衡的问题。

四、基本模式

1.创建型模式:单例模式、抽象工厂模式、建造者模式、工厂模式、原型模式。

2.结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。

3.行为型模式:模版方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、职责链模式、访问者模式。

学习之前,先对设计模式有个大致的了解和宏观的认识,抬头看完路接下来就要低头拉车了,一个一个的好好学习,好好钻研。相信在那本富有趣味,贴近生活,像小说似的《大话设计模式》的帮助下,这一阶段的学习会很愉快,加油吧!

时间: 2024-10-02 12:43:21

走进“设计模式”的相关文章

设计模式 2/23 工厂模式

工厂模式是最常用的设计模式之一,用好了,代码优雅,可维护性高,对系统设计会上一个台阶 为什么这么说,因为工厂模式可以牵扯出抽象工厂模式,也有大家都会聊到的简单工厂模式 我们要了解一点,23中设计模式中,不包含简单工厂模式,之所以大家会去聊这个,四个字,渐进明细 通过对简单工厂模式的了解,我们引入工厂这个词,不然一个写代码的,天天给他讲工厂,工厂,工厂,西厂,东厂,会晕 同时,通过逐步的深入,从简单工厂,到工厂模式,再到抽象工厂,渐进明细的过程,逐步深入的理解,比较优劣,择优而为我们所用. 试想我

【大话设计模式】—— 模板方法模式

一.概念 上一篇文章刚刚讲了[大话设计模式]-- 原型模式,原型模式主要是通过Clone()方法,创建新的对象,免去了初始化的过程.模板方法模式也特别会"偷工减料",把不变的行为搬移到超类,去除子类中的重复代码,将代码的复用优势展现的淋漓尽致.它为我们提供了特定的结构和样式,我们只需关心填充数据内容就好,省心啊- 下面让我们来看一下它的准确定义: 模板方法(TemplateMethod)模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中.模板方法使得子类可以不改变一个算法的结构

Java设计模式—Proxy动态代理模式

代理:设计模式 代理是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个对象的访问.代理类负责为委托类预处理消息,过滤消息并转发消息,以及进行消息被委托类执行后的后续处理. 图 1. 代理模式 为了保持行为的一致性,代理类和委托类通常会实现相同的接口,所以在访问者看来两者没有丝毫的区别.通过代理类这中间一层,能有效控制对委托类对象的直接访问,也可以很好地隐藏和保护委托类对象,同时也为实施不同控制策略预留了空间,从而在设计上获得了更大的灵活性.Java 动态代理机制以巧妙的方式近乎完

设计模式--缺醒适配器模式

http://www.cnblogs.com/xwdreamer/archive/2012/03/29/2424008.html在没有好好地研习面向对象设计的设计模式之前,我对Java接口和Java抽象类的认识还是很模糊,很不可理解. 刚学Java语言时,就很难理解为什么要有接口这个概念,虽说是可以实现所谓的多继承,可一个只有方法名,没有方法体的东西,我实现它又有什么用呢?我从它那什么也得不到,除了一些方法名,我直接在具体类里加入这些方法不就行了吗? 为什么一定要有抽象类这个概念?为什么就不能把

【设计模式】不要以为穿了马甲我就不认识你

设计模式中,真的有长的很像的,甚至我们能从其中一个的类图直接演变为另一种类图. 它们中有的类图一样,有的语言近似,但是却有着不同的名字,不同的"马甲",让我们快来认一认. 第一组:模板方法PK 建造者模式PK 工厂方法 模板方法建造者模式工厂方法 三者比较:相同点,主要思想都是定义一个框架,然后将一些步骤延迟到子类. 不同点,首先,模板方法模式是行为型模式,而建造者模式工厂方法都是创建型模式. 两两比较:模板VS 建造者 建造者模式用到模板方法,他们两个的使用范围区分就看构建的算法是否

NET设计模式 第二部分 结构性模式(12):享元模式(Flyweight Pattern)

享元模式(Flyweight Pattern) ——.NET设计模式系列之十三 Terrylee,2006年3月 摘要:面向对象的思想很好地解决了抽象性的问题,一般也不会出现性能上的问题.但是在某些情况下,对象的数量可能会太多,从而导致了运行时的代价.那么我们如何去避免大量细粒度的对象,同时又不影响客户程序使用面向对象的方式进行操作? 本文试图通过一个简单的字符处理的例子,运用重构的手段,一步步带你走进Flyweight模式,在这个过程中我们一同思考.探索.权衡,通过比较而得出好的实现方式,而不

设计模式(1)单例模式(Singleton)

设计模式(0)简单工厂模式 源码地址 0 单例模式简介 0.0 单例模式定义 单例模式是GOF二十三中经典设计模式的简单常用的一种设计模式,单例模式的基本结构需满足以下要求. 单例模式的核心结构只有一个单例类,单例模式要保证这个类在运行期间只能被实例化一次,即只会被创建唯一的一个单例类的实例. 单例模式需要提供一个全局唯一能得到这个类实例的访问点,一般通过定义一个名称类似为GetInstance的公用方法实现这一目的. 要满足上面的两点要求,应该很容易的想到: 1.该类的构造函数应该是私有的,不

.NET设计模式(13):享元模式(Flyweight Pattern)(转)

摘要:面向对象的思想很好地解决了抽象性的问题,一般也不会出现性能上的问题.但是在某些情况下,对象的数量可能会太多,从而导致了运行时的代价.那么我们如何去避免大量细粒度的对象,同时又不影响客户程序使用面向对象的方式进行操作? 本文试图通过一个简单的字符处理的例子,运用重构的手段,一步步带你走进Flyweight模式,在这个过程中我们一同思考.探索.权衡,通过比较而得出好的实现方式,而不是给你最终的一个完美解决方案. 主要内容: 1.  Flyweight模式解说 2..NET中的Flyweight

【设计模式】文章摘要 查找联系人控件

设计模式,真的非常像一个长,我们甚至从类图中存在的类图的直接进化. 他们中的一些,像类图.有些语言近似,但它有一个不同的名称,不同"马甲".让我们快来认一认. 第一组:模板方法PK 建造者模式PK 工厂方法 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDE3NjAxNA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" w