23种设计模式
简单记录,参考:
1、单例模式
2、工厂模式,比如spring的上下文ApplicationContext
3、抽象工厂模式
4、建造者模式(常写的limit、bonus的build方式)
5、原型模式(继承空接口Cloneable,可以实现clone拷贝方法,否则会报CloneNotSupportedException)
*************************************************************************************************************************************
6、适配器模式:分为;类的适配器、对象的适配器、接口的适配器。核心思想为:有一个待适配的方法,和一个Source,集成或拥有Source,扩展到待适配的方法中。比如Spring的DispatcherServlet中的HandlerAdapter ha = getHandlerAdapter(mappedHandler.getHandler());
7、装饰模式:包装某个类并实现或拓展相同的功能,比如IO流的操作,或者spring的HttpServletRequestWrapper。
8、代理模式:分为静态代理和动态代理,静态代理是代理类传入代理对象;动态代理是传入任意代理对象的Class(用于反射获取方法属性等)和处理器(继承接口InvocationHandler并包含代理对象的处理器对象),比如spring的aop。
9、外观模式:解决类与类之间的关系,将类的关系放到一个类中,降低类的耦合度,比如:电脑类,包含了CPU类、显示器类、硬盘类、内存类等。
10、桥接模式:JDBC的DriverManager一样,连接数据库时,不同的数据库切换,不用动太多代码,因为提供了统一的接口,不同数据库有自己的实现,数据库驱动来桥接。
11、组合模式:适用于树型结构,表示部分与整体模式。数据库的DBManager。
12、享元模式:对象的共享,即共享池。比如JDBC连接池。
***********************************************************************************************************************************
行为型模式:
第一类:通过父类与子类的关系进行实现。第二类:两个类之间。第三类:类的状态。第四类:通过中间类
13、策略模式:常用,定义一个接口,为多个实现类提供统一的接口。比如对站玩家和对战NPC两种模式,实现接口相同,使用不同实现类即可。
14、模板方法:定义个抽象类,定义N个方法,定义一个类,继承该抽象类,通过对抽象类调用,进而调用实现类方法。比如JdbcOperations接口,提供给JdbcTemplate模板实现(query、execute等)?spring的View?或者是策略模式?
15、观察者模式:reload机制。
16、迭代器模式:比如常用的集合类的迭代器。其中,Collection类继承了接口Iterable。
17、责任链模式:多个对象,每个对象持有下一个对象的引用,形成一条链,请求在这条链上传递,直到处理。比如,异常的处理,可以向上抛,直到解决为止。
18、命令模式:前端和后端通讯的每条命令,就是一个Command模式的实现。