JAVA设计模式(开篇)

来源:互联网 发布:php项目源代码下载 编辑:程序博客网 时间:2024/06/06 13:01

一.设计模式重要性

设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的;设计模式使代码编制真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。

二、七大设计原则

1.单一职责原则:一个类负责一项职责
2.里氏替换原则:继承与派生的原则(多态)
3.依赖倒置原则:层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。中心思想是 面向接口编程
4.开闭原则:软件实体应当对外开放,对修改关闭。也就是说:软件中的各个模块,类,以及功能等等,应该在不修改现有代码的基础上拓展新的功能。开:组件功能开放,允许功能扩展,闭:对于原有代码的修改时封闭的
5.迪米特法则:又称最少知道原则。第一个类如果需要调用第二个类的方法或者属性,可以通过第三个方法转达。耦合的方式很多,依赖,关联,组合,聚合等。其中成员变量,方法参数,方法返回值中的类为直接朋友,而出现在局部变量中的类则不是直接的朋友。也就是说,陌生的类最好不要做微局部变量形式出现在类的内部。总之一句话:高内聚 低耦合
6.接口隔离原则:客户端不应该依赖它不需要的接口,一个类对另一个类的依赖应该建立在最小的接口上
7.合成/聚合原则:尽量不要使用继承

三、设计模式分类


创建型模式


1.抽象工厂模式:提供一个借口,用于创建相关或依赖对象的家族,而不需要制定具体的类

2.建造者模式:使用建造者模式可以封装一个产品的构造过程,并允许按照步骤构造,将一个复杂的对象的构想与他们表示分离,使得同样的构建过程可以创建不同的表示

3.工厂模式:定义了一个创建对象的接口,但由于子类决定实例化的类是哪一个,工厂方法让类把实例化推迟到子类

4.原型模式:当创建给定的实例过程很昂贵或很复杂时,就用原型模式

5.单例模式:确保一个类只有一个实例,并提供全局访问点

6.多例模式:一个方案中结合两个或多个模式,以解决一般或者重复发生的问题


结构型模式


1.适配器模式:将一个类的接口,转换成客户期望的另一个接口,适配器让原本接口不兼容的类可以合作无间,对象适配使用组合,类适配使用多重继承

2.桥接模式:使用桥接模式通过将实现和抽象放在两个不同的类层次中而使它们可以独立改变

3.组合模式:允许你将对象组合成属性结构来表现“整体/部分”层次结构,组合能让客户以一致的方式处理个别对象以及对象组合

4.装饰者模式:动态的将责任附加到对象上,若要扩展功能,装饰者提供比继承更有弹性的替代方案

5.外观模式:提供了一个统一的接口,用来访问系统中的一群接口,外观定义了一个高层接口,让子系统更容易使用

6.享元模式:如想让某一个类的一个实例能用来提供许多“虚拟实例“,就使用享元模式

7.代理模式:为另一个对象提供一个替身或者占位符以控制对这个对象的访问


行为模式


1.责任链模式:通过责任链模式,你可以为某个请求创建一个对象链,每个对象依序检查此请求并对其进行处理或者将他们传给链的下一个对象

2.命令模式:将”请求“封装成对象,以便使用不同的请求,队列,或者日志来参数化其他对象,命令模式也支持可撤销的操作

3.解释器模式:使用解释器模式为语言创建解释器

4.迭代器模式:提供一种方法顺序访问一个聚合对象的各个元素,而又不暴露其内部的表示

5.中介者模式:使用中介者模式来集中相关对象之间复杂的沟通和控制方式

6.备忘录模式:当你需要让对象返回之前的状态(例如:撤销操作),使用备忘录模式

7.观察者模式:当对象之间定义一对多的依赖,这样一来,当一个对象状态改变时,依赖他的对象都会收到通知,并且自动更新

8.状态模式:允许对象在内部状态改变时,改变他的行为,对象看起来好像改变了它的类

9.策略模式:定义了算法族,分别封闭起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户

10.模版方法模式:在一个方法中定义了一个算法的骨架,而将一些步骤延迟到子类中,模版方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤

11.访问者模式:当你想成为一个对象的组合增加新的能力,且封装并不重要时,就使用访问者模式



0 0
原创粉丝点击