装饰模式 :装饰模式就是给一个对象增加一些新的功能,而且是动态的,要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例。下面看代码
例子: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
执行方法后
设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是它能被广泛应用的原因(真的很有利于重构)。