您的位置:首页 > 其它

设计模式初识

2017-01-23 20:14 190 查看
什么是设计模式

设计模式是一套被反复使用,多数人知晓的,经过分类编目、代码设计经验的总结。百度是这样解释的。我的理解是设计模式就是一种能使代码变得更加灵活、更能复用,程序更易修改的被大家普遍接受的一种编写准则。



为什么要用设计模式

给大家举一个例子。有一天,小明去饭店吃饭,他点了一份鸡蛋炒饭,正在他肚子咕咕叫的时候,炒饭上来了。小明心急的开始大吃,可是突然发现鸡蛋饭好像没有放鸡蛋,于是他就大叫服务员要求重做。一位厨师的想法是直接倒掉这份炒饭,重新再做一份。而另一位厨师却说应该保留这份炒饭,加上鸡蛋就可以了!这两种方法哪一种更好呢?当然是第二位厨师的方法,因为第二位只是更改了这份炒饭的一小部分,哪有不对改哪里,而第一位厨师却推倒了之前的所有,重新再做!这就像我们之前做过的VB版的机房收费系统,如果突然想到有一个地方的需求需要修改,就要改和此处联系的好多好多处,这样的软件的维护性、扩展性和复用性都不好,灵活性极差。所以就出现了面向对象和设计模式,它就使得软件和程序拥有了可维护性,因为我们只需要再炒一个鸡蛋就好了。也使得软件拥有复用性,我们完全可以利用之前那份没有放鸡蛋的炒饭。炒饭保留,再往里面加个鸡蛋就好了,这就是可扩展。鸡蛋后来是想混合到炒饭里还是单拿出来都可以,只要有鸡蛋有炒饭就可以,这就是灵活性。做程序写代码的道理和这个一样,设计模式使用的原因也正是如此!

设计模式的原则

1、单一职责原则

就一个类而言,应该仅有一个引起它变化的原因。

之前我们用面向过程思想开发机房收费系统时,总是喜欢在一个窗体里放好多好多功能。同样,一个类如果承担职责太多,这些职责就会耦合在一起,一个职责的变化可能会削弱或者抑制这个类中的其他职能。

所以我们就需要把这些职责相互分离。方法很简单,,如果这个你能想到多于一个冬季去改变这个类,那么这个类就该分离职责了!

2、开放-封闭原则

简单来说,就是对扩展开放,对修改封闭。

开发人员应该仅对程序中呈现出频繁变化的那些部分作出抽象,当然封闭和开放都不是绝对的,要相对来看!

3、依赖倒转原则

高层模块不应该依赖于低层模块,两个都应该依赖于抽象。抽象不应该依赖于细节,细节应该依赖于抽象,说白了其实就是应该面对接口编程,而不是面对实现编程。就像全世界生成CPU的接口都是统一标准,所以我们每个电脑想要更换CPU都是轻而易举的事情。

4、里氏转换原则

子类型必须能够替换掉它们的父类型。正所谓父类是哺乳动物,而老虎、狮子是子类,这就符合里氏转换原则,因为子类完全能够替换父类。而如果父类是鸟类,子类是企鹅,这样这不符合里氏转换原则,因为鸟是会飞的,企鹅不会飞,企鹅不能完全替换鸟。

5、接口隔离原则

定义服务的例子,每一个接口应该是一个角色,不多不少,不敢不该干的是,该干的事都要干。

6、合成、聚合原则

少用继承,多用合成关系去实现。

7、迪米特原则

“不要和陌生人说话”,即一个对象应对其他对象有可能少的了解。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: