咨询热线:15117569149 联系人:廖俊安 地址:广东省深圳市南山区南海大道新保辉大厦
浅谈设计模式
来源:vwin德赢 发布时间:2019-11-18 点击量:231
转载请注明出处:https://www.cnblogs.com/wenjunwei/p/9770693.html
设计模式简介
设计模式(Design Pattern)代表了最佳实践,通常被有经验的软件开发人员所采用。设计模式是软件开发人员在开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长时间的实验和总结出来的。
设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了代码重用、让代码更容易被他人理解、保证代码可靠性。
设计模式的出现可以让我们站在前人的肩膀上,通过一些成熟的设计方案来指导新项目的开发和设计,以便于我们开发出具有更好的灵活性和可扩展性,也更易于复用的软件系统。设计模式有助于对框架结构的理解,成熟的框架通常使用了多种设计模式,如果你熟悉这些设计模式,毫无疑问,你将迅速掌握框架的结构,我们一般开发者如果突然接触EJB、Spring等框架,会觉得特别难学、难掌握,那么转而先掌握设计模式,无疑是给了你剖析EJB或J2EE系统的一把利器。学习这些模式有助于经验不足的开发人员通过一种简单快捷的方式来学习软件设计。
设计模式的六大原则
1.开闭原则(Open Close Principle)
开闭原则的意思是:对扩展开放,对修改关闭。在程序需要扩展的时候,尽量在不修改原有的代码的情况下进行扩展,实现热插拔的效果。这样做是为了使程序的扩展性好,易于维护和升级。
任何软件都需要面临一个很重要的问题,即它们的需求会随时间的推移而发生变化。当软件系统需要面对新的需求时,我们应该尽量保证系统的设计框架是稳定的。如果一个软件设计符合开闭原则,那么可以非常方便地对系统进行扩展,而且在扩展时无须修改现有代码,使得软件系统在拥有适应性和灵活性的同时具备较好的稳定性和延续性。随着软件规模越来越大,软件寿命越来越长,软件维护成本越来越高,设计满足开闭原则的软件系统也变得越来越重要。
2.里氏代换原则(Liskov Substitution Principle)
里氏代换原则是面向对象设计的基本原则之一。 里氏代换原则中说,任何基类(父类)可以出现的地方,子类一定可以出现。里氏代换原则是对开闭原则的补充。实现开闭原则的关键步骤就是抽象化,而基类与子类的继承关系就是抽象化的具体实现,所以里氏代换原则是对实现抽象化的具体步骤的规范。
在软件中将一个基类对象替换成它的子类对象,程序将不会产生任何错误和异常,反过来则不成立,如果一个软件实体使用的是一个子类对象的话,那么它不一定能够使用基类对象。 例如:我喜欢动物,那我一定喜欢猫,因为猫是动物的子类;但是我喜欢猫,不能据此断定我喜欢动物,因为我并不喜欢老鼠,虽然它也是动物。
3.依赖倒转原则(Dependence Inversion Principle)
依赖倒转原则:这个原则是开闭原则的基础。抽象不应该依赖于细节,细节应当依赖于抽象。换言之,针对接口编程,依赖于抽象而不依赖于具体。依赖倒转原则要求我们在程序代码中传递参数时或在关联关系中,尽量引用接口和抽象类进行变量类型声明、参数类型声明、方法返回类型声明,以及数据类型的转换等,而不要用具体类来做这些事情。
4.接口隔离原则(Interface Segregation Principle)
使用多个专门的接口,而不使用单一的总接口,即客户端不应该依赖那些它不需要的接口。每一个接口应该承担一种相对独立的角色,不干不该干的事,该干的事都要干。
在使用接口隔离原则时,我们需要注意控制接口的粒度,接口不能太小,如果太小会导致系统中接口泛滥,不利于维护;接口也不能太大,太大的接口将违背接口隔离原则,灵活性较差,使用起来很不方便。
5.迪米特法则,又称最少知道原则(Demeter Principle)
最少知道原则是指:一个实体应当尽量少地与其他实体之间发生相互作用,使得系统功能模块相对独立。不要和陌生人说话,只与你的直接朋友通信,即一个对象应对其他对象有尽可能少的了解。简言之,就是通过引入一个合理的第三者来降低现有对象之间的耦合度。
6.合成复用原则(Composite Reuse Principle)
合成复用原则是指:尽量使用合成/聚合的方式,少用继承。
例如:有几个类要与数据库打交道,就写了一个数据库操作的类,然后别的跟数据库打交道的类都继承这个。结果后来,修改了数据库操作类的一个方法,各个类都需要改动。
设计模式分类
设计模式分为三大类:
1.创建型模式
这些设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用 new 运算符直接实例化对象。这使得程序在判断针对某个给定实例需要创建哪些对象时更加灵活。
包括5个:
工厂模式(Factory Pattern)抽象工厂模式(Abstract Factory Pattern)单例模式(Singleton Pattern)建造者模式(Builder Pattern)原型模式(Prototype Pattern)
结构型模式
这些设计模式关注类和对象的组合。继承的概念被用来组合接口和定义组合对象获得新功能的方式。
包括7个:
适配器模式(Adapter Pattern)桥接模式(Bridge Pattern)组合模式(Composite Pattern)装饰器模式(Decorator Pattern)外观模式(Facade Pattern)享元模式(Flyweight Pattern)代理模式(Proxy Pattern)
行为型模式
这些设计模式特别关注对象之间的通信。
包括11个:
责任链模式(Chain of Responsibility Pattern)命令模式(Command Pattern)解释器模式(Interpreter Pattern)迭代器模式(Iterator Pattern)中介者模式(Mediator Pattern)备忘录模式(Memento Pattern)观察者模式(Observer Pattern)状态模式(State Pattern)策略模式(Strategy Pattern)模板方法模式(Template Pattern)访问者模式(Visitor Pattern)
感谢您的阅读,如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮。本文欢迎各位转载,但是转载文章之后必须在文章开头给出原文链接。
, 1, 0, 9);相关产品
-
谈及国歌获立法,田伟几度哽咽。她告诉记者,常年生活在海外,每每听到国歌,都会受到感染。1935年,聂耳在东京完成《义勇军进行曲》谱曲,因此与歌曲颇有渊源的日本民众也有很多向田伟学唱中国国歌。
-
试验结果显示,WEY P8在燃油系统完整性、电安全要求以及总体结果均获得PASS级别,成为中国首款成功挑战美规尾碰的车型。而WEY P8之所以能获得这样的成绩,是因为早在研发之初便以北美法规要求为标准,通过不断测试调整,从电位均衡、绝缘监测、主动放电、被动放电、高压互锁五个方面确保了车辆的电安全防护能力。
-
最后一点:你会不会倾听?这可不是左耳朵进右耳朵出,如果你听不进去教练的训斥、不能及时改进错误,你就等着吃土吧。而且你这种“不听话”的坏形象,会很快传遍全联盟。
-
记者在《方案》中看到,重庆市机关事务局将负责落实新能源公务车(包括公安巡逻车辆、机场特种车辆等)的推广应用;在核定保留车辆范围内,购买新能源汽车占当年配备更新总量比例不低于30%,以后逐年提高。
-
昨天下午两点半,记者来到会议室时,不少代表已经提前抵达。16位受邀代表中既有市环保局原新闻发言人、环保达人杜少中,也有自掏腰包搞绿化的“北京榜样”廖理纯,还有北京环保公益形象大使聂一菁、知名微博博主孟令悦,以及来自不同媒体的记者,代表了各行各业长期关注环保的市民。
-
空勤总队说,起飞不久约5分钟,机组人员听到巨大声响,立即通报正驾驶,同时,地面也回报有舱门掉落到台北市民生初中围墙,直升机于是飞往莺歌大汉溪鸢山堰检修,随后,返回松山机场。
-
为此,两岸关系面临未来走何种道路的选择。在此关键时期,习近平指出“两岸同胞要总结两岸关系和平发展的经验,精心维护两岸关系和平发展成果”。
-
夏军表示:“在互联网时代,每个人都有机会,如果你的创意能让我们有更好的成长,我们会为你做一个专门的发布会。上汽决定打造一个创业的梦想基金,鼓励那些有创意、有技术和有才干的人,无论你在何方,我们都会给你一个实验平台,或者和你携手成为创业的伙伴。”
热点资讯
- 这个国家禁止妇女出国。中国到处都是漂亮的女人。他们更喜欢中国小伙子。2019-11-06
- 《异形》导演将打造巨制《人类简史》:改变人的认知2019-06-23
- 山东贫困村客运站点建成率达99.3%2019-11-09
- 油画作价2亿卖给湖南台,电广传媒靠关联交易避免ST?2019-11-17
- 大圣归来定制,高夫男士畅透保湿洗面奶2支20元/4支37.5元2019-11-13
- 上机数控公布中签结果:中签号码共2.835万个2019-11-16
- 深交所关注乐视网“追债”贾跃亭旗下72.8亿元欠款待解2019-11-10
- 一线|阿里健康等互联网医疗企业推出疫苗查询功能2019-06-23