读书人

JAVA装饰模式打包父类提供转换接口

发布时间: 2012-09-18 16:21:42 作者: rapoo

JAVA装饰模式,封装父类,提供转换接口(二)
http://numen06.iteye.com/blog/1428067
上一篇文章提到了装饰类的父类,对于一些基本功能的封装。
在实际运用过程中,带的类型有两个太复杂, 不利于装饰类的扩展。
所以功能和装饰类区分,以便更好的扩展。

package com.wesley.framework.decoration;import java.lang.reflect.InvocationTargetException;import java.util.ArrayList;import java.util.Collection;import java.util.List;public class DecoratorHelper<Model, Decor extends Decorator<Model>> implementsDecoration<Model, Decor> {private Class<Decor> clazz;public DecoratorHelper(Class<Decor> dec) {super();this.clazz = dec;}@SuppressWarnings("unchecked")public DecoratorHelper(Decor dec) {super();this.clazz = (Class<Decor>) dec.getClass();}/* * (non-Javadoc) *  * @see * com.wesley.framework.decoration.Decoration#baseExchange(java.lang.Object) *  * 反射必有参数构造函数,将实体包含在装饰器之中 */@Overridepublic Decor baseExchange(Model model) {Decor decor = null;try {decor = clazz.getConstructor(model.getClass()).newInstance(model);} catch (InstantiationException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();} catch (IllegalArgumentException e) {e.printStackTrace();} catch (SecurityException e) {e.printStackTrace();} catch (InvocationTargetException e) {e.printStackTrace();} catch (NoSuchMethodException e) {e.printStackTrace();}decor.setModel(model);return decor;}/* * (non-Javadoc) *  * @see * com.wesley.framework.decoration.Decoration#baseExchange(java.util.Collection * 转换List等Collection接口数据 */@Overridepublic List<Decor> baseExchange(Collection<Model> models) {List<Decor> decorList = new ArrayList<Decor>();for (Model model : models) {decorList.add(this.baseExchange(model));}return decorList;}}

读书人网 >编程

热点推荐