首页Java基础Java源码Java框架设计模式JavaEEJava Web开发视频教程

您现在的位置:首页 >

设计模式

关注我们

优就业官方微信
优就业官方微信扫描二维码,即可与小
U亲密互动
优就业官方微博
优就业官方微博扫码关注,更有精彩活动
等你参与
  • 优就业官方QQ号

    优就业官方QQ号

    一键加好友
  • 咨询电话:( 9:00-22:00 )

    400-650-7353

Java装饰模式详解

2017-12-13 16:24:42

装饰模式就是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。

装饰模式的特点:

(1) 装饰对象和真实对象有相同的接口。这样客户端对象就能以和真实对象相同的方式和装饰对象交互。

(2) 装饰对象包含一个真实对象的引用(reference)

(3) 装饰对象接受所有来自客户端的请求。它把这些请求转发给真实的对象。

(4) 装饰对象可以在转发这些请求以前或以后增加一些附加功能。这样就确保了在运行时,不用修改给定对象的结构就可以在外部增加附加的功能。在面向对象的设计中,通常是通过继承来实现对给定类的功能扩展。继承不能做到这一点,继承的功能是静态的,不能动态增删。

Java装饰模式详解

代码实例:

①package com.model.structure;

public interface Sourceable {

public void method();

}

②package com.model.structure;

public class Source implements Sourceable {

@Override

public void method() {

System.out.println("the original method!");

}

}

③package com.model.structure;

public class Decorator implements Sourceable {

private Sourceable source;

public Decorator(Sourceable source) {

super();

this.source = source;

}

@Override

public void method() {

System.out.println("before decorator!");

source.method();

System.out.println("after decorator!");

}

}

④package com.model.structure;

public class DecoratorTest {

public static void main(String[] args) {

//(1) 装饰对象和真实对象有相同的接口。这样客户端对象就能以和真实对象相同的方式和装饰对象交互。

//(2) 装饰对象包含一个真实对象的引用(reference)

//(3) 装饰对象接受所有来自客户端的请求。它把这些请求转发给真实的对象。

//(4) 装饰对象可以在转发这些请求以前或以后增加一些附加功能。这样就确保了在运行时,不用修改给定对象的结构就可以在外部增加附加的功能。

// 在面向对象的设计中,通常是通过继承来实现对给定类的功能扩展。

// 继承不能做到这一点,继承的功能是静态的,不能动态增删。

Sourceable source = new Source();

Sourceable obj = new Decorator(source);

obj.method();

}

}

运行结果:

before decorator!

the original method!

after decorator!

免责声明:本文来源于网络,由网友提供或网络搜集,仅供个人交流学习参考使用,不涉及商业盈利目的。如有版权问题,请联系本站管理员予以更改或删除。谢谢合作!

猜你喜欢

 
 
咨询中心
优就业微信扫一扫
微信扫一扫

400-650-7353

加入官方微博