装饰模式 :装饰模式就是给一个对象增加一些新的功能,而且是动态的,要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例。下面看代码 例子:DecoratorDao 是接口,DecoratorDaoImpl是实现接口的业务逻辑,Decorator是装饰类
package Decorator; /** * 简单的装饰模式 * * @author zhaoxiao * */ public interface DecoratorDao { int getNumber(); } package Decorator; /** * dao接口的实现,也是被装饰的类 * * @author zhaoxiao * */ public class DecoratorDaoImpl implements DecoratorDao { /** * 实现接口 getNumber 方法 */ @Override public int getNumber() { // TODO Auto-generated method stub return 0; } } package Decorator; /** * 装饰类 * @author zhaoxiao * */ public class Decorator implements DecoratorDao { private DecoratorDao decoratorDao; public Decorator(DecoratorDao decoratorDao) { super(); this.decoratorDao = decoratorDao; } @Override public int getNumber() { System.out.println("执行方法前"); // TODO Auto-generated method stub System.out.println(decoratorDao.getNumber()); System.out.println("执行方法后"); return 0; } } package Decorator; /** * 测试类 * * @author zhaoxiao * */ public class DecoratorTest { public static void main(String[] args) { DecoratorDao decoratorDao = new DecoratorDaoImpl(); Decorator decorator = new Decorator(decoratorDao); decorator.getNumber(); } }程序运行结果:
执行方法前 0 执行方法后设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是它能被广泛应用的原因(真的很有利于重构)。