组合模式

最近在做接口时候,一路做一路重构就发现用了组合模式,用设计模式真需要场景的,不然事不成!

我这里场景: 是接口返回的数据放进各自接口的POJO里,因为有一些是数组数据,所以用了组合模式!这样就可以随意组合叶子和树枝形成树形结构了!

但这里跟书上所说的组合模式有区别,区别在于书中说的例子 是 在Client中去实例化叶子和树枝,一个一个这样组合,这样是一个很菜的用法!

我这里使用了反射机制,只要传入 叶子类名.class 就可以根据我想要的叶子在树枝里实例化。

 用代码举个例子:

	RedPackResult resultBean = submit(22, couponBean.concatString());//调用接口返回 POJO BEAN

		if (resultBean != null && resultBean.getCheckCode().equals("00")) 
			//注意:这里使用了组合模式,因为这个接口返回的是以#拆分的数组式报文,所以使用报文组合类和对应的报文叶子类
			//RespComposite是组合类,RespCouponRecordsByCouponNoBean是叶子
			resultBean.setRespContentResult(new RespComposite(),RespCouponRecordsByCouponNoBean.class);//这个很重要

 

	@SuppressWarnings("rawtypes")
	public void setRespContentResult(RedPackRespBeanBase respContentResult,Class clazz) {

		respContentResult.init(this.content,clazz);//回调传入的RedPackRespBeanBase子类的init方法

		this.respContentResult = respContentResult;

	}
//RespComposite的init() 方法实现:

 @SuppressWarnings("rawtypes")  @Override  public void init(String content, Class clazz) {      String[] strArray = getSplitContent(content,"#");//以#拆分数组      super.setCode(strArray[0]);// 返回码

  for (int i = 1; i < strArray.length; i++) {        RedPackRespBeanBase respBean = getInstance(clazz); //使用反射创建实例,这个respBean就是RespCouponRecordsByCouponNoBean.class        respBean.init(strArray[0]+"|" + strArray[i],null);// 把返回报文传入RespCouponRecordsByCouponNoBean叶子节点里初始化 RespList.add(respBean);

  }

书中说的组合模式用来搞权限,但是还没想出来,希望高手指点!

以下是类图,版面太小,我不会搞,自己下载吧:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值