这种设计模式大家会不自觉得用到,但是没有升华成这种理论。
需求来源分析:一个类不可能把其子类要定义方法在父类中定义完,每个子类都有其个性化的需求,这些个性化的需求就是装饰(Decorator),在子类中加上个性化的方法、字段等就实现油漆工模式。如数据库的应用系统都有保存、新增、删除这几个动作,这几个动作可以以一个类的方式继承下来,数据库系统的每个应用应该继承之类实现,但每个应用的保存方法在保存时可能有具体的业务逻辑要判断。具体要业务逻辑封装成这个子类的额外方法,这就实现了Decortator模式。
应用举例:
父类
package com.wsysoft.designMode;
import java.sql.ResultSet;
import java.sql.SQLException;
public class Decorator {
private ResultSet rslt;
public void add() throws SQLException {
try {
rslt.insertRow();
} catch (SQLException e) {
e.printStackTrace();
}
// …………………………可以继续定 义方法
}
}
子类:SubDecorator,需进行刷漆
package com.wsysoft.designMode;
import java.sql.SQLException;
/********************************************
* 这个类代表被刷的类,需要增加油漆(即装饰)实现个性化
*/
public class SubDecorator extends Decorator {
private Decorator decorator;
/******************************
*
* @param decorator 传入此参数是实现Decorator模式的关键。
*/
public SubDecorator(Decorator decorator) {
super();
this.decorator = decorator;
}
// @Override
public void add() throws SQLException {
otherMethod();
decorator.add();
}
public void otherMethod() {
System.out.println("新增方法调用之前的数据用户状态查等工作……");
}
}
调用方式:
Decorator decorator=new Decorator();
SubDecorator subDecorator= new SubDecorator(decorator);
subDecorator.add();
评论