Java设计模式泛型化之装饰模式
来源:互联网 发布:淘宝网阿迪复古鞋 编辑:程序博客网 时间:2024/05/07 03:53
装饰模式是Java开发中常见的设计模式之一。我们在Service层的设计实现中就用到了装饰模式。
对于它的理解是这样的:
在原有已经实现的功能上添加新的功能实现。
其结构是这样的:
一个原有的抽象层(接口或者抽象类)对应既有抽象层的实现层一个Decorator类来实现原有抽象层一个或多个具体的Decorator类扩展这个Decorator实现一个调用者
来看看代码:
原有的抽象层
public interface Origin {public void doSomething();public void doOtherthing();}
既有抽象层的实现层
public class OriginImpl implements Origin {@Overridepublic void doSomething() {System.out.println("Origin do something.");}@Overridepublic void doOtherthing() {System.out.println("Origin do other thing.");}}
Decorator类
public abstract class Decorator implements Origin {private Origin org;public Decorator(Origin org) {this.org = org;}@Overridepublic void doSomething() {org.doSomething();}@Overridepublic void doOtherthing() {org.doOtherthing();}}
不同的装饰者
public class DecoratorA extends Decorator {public DecoratorA(Origin org) {super(org);}private void doNothing() {System.out.println("Decorator A do nothing.");}private void doAnotherthing() {System.out.println("Decorator A do another thing.");}@Overridepublic void doSomething() {doNothing();super.doSomething();}@Overridepublic void doOtherthing() {super.doOtherthing();doAnotherthing();}}
public class DecoratorB extends Decorator {public DecoratorB(Origin org) {super(org);}private void before() {System.out.println("Decorator B do it before.");}private void after() {System.out.println("Decorator B do it after.");}@Overridepublic void doSomething() {super.doSomething();after();}@Overridepublic void doOtherthing() {before();super.doOtherthing();}}
调用者
public class DecoratorCaller {public static void main(String[] args) {Origin org = new OriginImpl();DecoratorA decA = new DecoratorA(org);DecoratorB decB = new DecoratorB(org);decA.doSomething();decB.doOtherthing();}}
那么,如何泛型化呢?
不难看出,Decorator才是关键所在。因此,泛型化处理是这样的:
Decorator
@SuppressWarnings("all")public abstract class Decorator<T extends Origin> implements Origin {private T t;public Decorator(T t) { this.t = t;}@Overridepublic void doSomething() {t.doSomething();}@Overridepublic void doOtherthing() {t.doOtherthing();}}
具体实现类
public class DecoratorA<T extends Origin> extends Decorator<T> {public DecoratorA(T t) {super(t);}private void doNothing() {System.out.println("Decorator A do nothing.");}private void doAnotherthing() {System.out.println("Decorator A do another thing.");}@Overridepublic void doSomething() {doNothing();super.doSomething();}@Overridepublic void doOtherthing() {super.doOtherthing();doAnotherthing();}}
public class DecoratorB<T extends Origin> extends Decorator<T> {public DecoratorB(T t) {super(t);}private void before() {System.out.println("Decorator B do it before.");}private void after() {System.out.println("Decorator B do it after.");}@Overridepublic void doSomething() {super.doSomething();after();}@Overridepublic void doOtherthing() {before();super.doOtherthing();}}
调用者
public class DecoratorCaller {public static void main(String[] args) {Origin org = new OriginImpl();DecoratorA<Origin> decA = new DecoratorA<Origin>(org);DecoratorB<Origin> decB = new DecoratorB<Origin>(org);decA.doSomething();decB.doOtherthing();}}
0 0
- Java设计模式泛型化之装饰模式
- Java设计模式之装饰设计模式
- Java之装饰设计模式
- java设计模式之装饰
- Java设计模式之装饰模式
- Java设计模式之装饰模式
- java设计模式之装饰模式
- Java设计模式之二装饰模式
- JAVA设计模式之装饰模式
- java设计模式之装饰者模式
- java设计模式之装饰模式Decorator
- JAVA设计模式之装饰模式
- JAVA 设计模式之装饰模式
- JAVA设计模式之装饰模式
- java 设计模式之装饰模式
- Java设计模式之装饰者模式
- Java设计模式笔记之装饰模式
- Java设计模式之装饰器模式
- android修改默认桌面
- 水星MW4530R刷机总结
- Android应用如何监听自己是否被卸载及卸载反馈功能的实现
- 排队时延(Queuing delay)
- AutoCAD2014注册机使用说明
- Java设计模式泛型化之装饰模式
- C# 使用主线程更新winform界面
- Android应用如何监听自己是否被卸载及卸载反馈功能的实现(第二版)
- 想读的书-2014年
- Qt技术优势
- zookeeper代码解析
- Android实现推送方式解决方案
- 新年计划
- hro之家