温习:装饰者模式

原创 2017年01月03日 10:12:22

温习下装饰者模式(定义

从命名可以看出,装饰,在原来的物质之上覆盖一些个性化需求,仅仅是覆盖,不改变其本来的实质;

应了那句谚语“美味的早餐,但很难识别其真实的面目”,道道都很浅显易懂,但执行起来却很容易忽视

举个常用的例子,不同系统接口经常需要不同的报文通讯,那我们来看下:

//请求接口

public interface IRequest extends Serializable {

Object assemble();//组装报文

}


为什么写接口呢,不明白的同学可以看看java基础设计规范,“依赖倒置原则”:〔要依赖抽象,不要依赖具体类〕

//请求基类

public class BaseRequest implements IRequest {

private static final long serialVersionUID = 1L;

private IRequest request;

public BaseRequest(IRequest request) {

super();//关注点,实现父类构造器

this.request = request;

}

public Object assemble() {

return this.request.assemble();//组装接口

}

}

有个接口、有个基类,既然是装饰,那大家是有共性的,否则怎么动态添加想要的功能或职责呢,我们继续:

//公共信息

public class PublicRequest extends BaseRequest {

private static final long serialVersionUID = 1L;

public PublicRequest(IRequest request) {

super(request);

}

/** 服务名 */

protected String serviceName;

public String getServiceName() {

return serviceName;

}

public void setServiceName(String serviceName) {

this.serviceName = serviceName;

}

public Object assemble() {

String request=(String) super.assemble();//关注点,执行父类组装

//拼接基础报文......

return request;

}

}

如下是个性信息类:

public class RequestOf* extends BaseRequest {//个性信息类

private static final long serialVersionUID = 1L;

public PayRequestOf*(IRequest request) {

super(request);

}

/** 姓名 */

protected String name;

public String getName() {

return name;

}

public void setCustomerName(String name) {

this.name= name;

}

public Object assemble() {

String request=(String) super.assemble();

//拼接个性报文...

return request;

}

}

我们在凭借各种不同的报文时候

IRequest channel1Request=new RequestOf*(new PublicRequest());

//是不是很方便呢

IRequest channel1Request=new RequestOf*(new RequstOf*(new PublicRequest())).......

软件来源于生活,应用于生活


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

装饰者模式Android实例

  • 2016年07月30日 09:58
  • 6.77MB
  • 下载

装饰者模式

  • 2014年06月09日 13:01
  • 5KB
  • 下载

JS—Decorator(装饰者)模式

http://taobaofed.org/blog/2015/11/16/es7-decorator/ 转载自淘宝前端团队 装饰模式是装饰模式,是通过封装其他对象达到设计的目的。 装饰模式不一样,仅仅...

装饰者模式 - PHP版

  • 2014年05月21日 09:45
  • 2KB
  • 下载

具有装饰者的模式照片

  • 2009年06月14日 00:46
  • 1.78MB
  • 下载

Javascript中的装饰者模式以及AOP简介

装饰者顾名思义就是起到装饰作用,装饰者模式就是可以动态给某个对象增加一些额外的行为,而不会影响从这个类中派生的其他对象。模拟传统面向对象语言的装饰者模式假设我们编写一个飞机大战的游戏,飞机的等级会随经...
  • mzzzzq
  • mzzzzq
  • 2016年04月11日 23:02
  • 503

装饰者模式案例学习代码

  • 2013年03月03日 01:07
  • 2KB
  • 下载

装饰者模式源代码java

  • 2014年01月18日 21:59
  • 3KB
  • 下载

装饰者模式-有层次地组织代码

代码组织的方式可以分为横向和纵向,横向指的是抽象与具体的关系(接口或抽象类与实际类的关系),这种方式能够让代码依赖于抽象的东西,更加灵活地扩展,体现了对于增加开放,对于修改关闭的程序设计原则。对于稍微...

设计模式-装饰者

  • 2015年11月07日 10:44
  • 4.44MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:温习:装饰者模式
举报原因:
原因补充:

(最多只允许输入30个字)