Java设计模式练习
设计模式原则(SOLID原则):
1.单一职责原则:一个类只负责一项职责(但界限非常模糊,视业务情况而定)
2.里氏替换原则:任何基类可以出现的地方,子类一定能够出现(类可扩展性)
3.依赖倒置原则:接口编程,依赖于抽象而不依赖于具体(描述先于实现)
4.接口隔离原则:优先使用多个隔离接口,而不是使用单个接口(函数式编程)
5.迪米特原则:单个实体尽量与其他实体少发生相互作用(功能模块相对独立)
6.开闭原则:类、模块、函数对扩展开放,对修改关闭(通俗地说:艹,谁改老子的代码@%¥%&*%¥%¥。。。你懂的)
设计模式种类:
一、创建型:
1.单例模式Singleton
单例类只能有一个实例;
单例类必须自己创建自己的唯一实例;
单例类必须给所有其他对象提供这一实例
2.工厂模式Factory
出现大量用例需要创建,且具有共同接口时使用(类的创建依赖工厂类)
3.抽象工厂模式AbstractFactory
创建多个工厂类继承抽象工厂类,
需要增加新的功能时,直接增加新的工厂子类,不需要修改之前的代码(保证代码可扩展性并遵守开闭原则)
4.建造者模式Builder
将各种业务类集中起来进行管理,用来创建复合对象,使其具有不同的属性
5.原型模式Prototype
以某个对象为原型进行复制、克隆,产生一个和原对象类似的新对象(注意深克隆与浅克隆)
以上五种设计模式现在完全可以由Spring框架初始化实现。
二、行为型:
6.模板方法模式TemplateMethod(父、子类)
抽象类中,定义一个主方法,再定义1...n个子方法,可以是抽象或实现方法,
子类继承该抽象类,重写或调用抽象类方法,实现对子类的调用
7.中介者模式Mediator(中间类)
降低类类之间的耦合,具体类之间的关系及其方法调用由中介类负责
8.观察者模式Observer(两类之间)
类变化时,其它依赖该类的类都会随着变化
9.访问者模式Visitor(中间类)
分离对象数据结构与行为,适用于数据结构相对稳定算法又易变化的系统
10.命令模式Command(两类之间)
调用方,传递方,执行方三者解耦,请求与执行分开(典型:MVC设计模式)
11.责任链模式ChainOfResponsibility(两类之间)
多个对象中每个对象持有对下一个对象的引用并形成链式引用,请求链上传递到某个类决定处理为止,
可以实现在客户端未知的情况下动态调整系统
12.策略模式Strategy(父、子类)
设计接口类统一实现,定义、封装一系列算法,且可以相互替换,不影响到调用
13.迭代器模式Iterator(两类之间)
使用迭代器对象顺序访问聚集合中的对象
14.解释器模式Interpreter(中间类)
主要用于开发OOP编译器
15.备忘录模式Memento(类状态)
保存对象的某个状态,以便在适当的时候恢复对象
16.状态模式State(类状态)
对象状态改变时同时改变其实现(典型:权限控制)
三、结构型:
17.适配器模式Adapter
将类的接口转换成另一种接口,消除接口不匹配所造成的类的兼容性问题。
主要分为:类的适配器模式(主要)、对象的适配器模式、接口的适配器模式
18.桥接模式Bridge
将抽象化与实现化解耦,使得二者可以独立变化(典型:JDBC )
19.组合模式Composite
用于处理类似树形结构的问题
20.装饰模式Decorator
给一个对象动态增加新功能,
要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例
应用场景:扩展类功能;动态增加、撤销对象功能
21.外观模式Facade
将类和类之间的关系配置到一个Facade类中,降低了类之间的耦合度
22.享元模式Flyweight
实现对象共享池,以减少内存的开销,通常与工厂模式配合使用(典型:JDBC连接池)
23.代理模式Proxy
创建一个代理类替原对象进行或扩展一些操作(满足开闭原则)
参考:http://www.cnblogs.com/maowang1991/archive/2013/04/15/3023236.html