黑马程序员-IO(1)

来源:互联网 发布:中国网络经纪人登陆 编辑:程序博客网 时间:2024/05/22 07:59

---------------------android培训、java培训、期待与您交流! -------------------------

Decorator设计模式

UML类图

Decorator Design Pattern

实现代码

Component.java

package com.uc.decoratortest;/** * 功能接口 */public abstract class Component {public abstract void Operation();}

ConcreteComponent.java

package com.uc.decoratortest;public class ConcreteComponent extends Component {@Overridepublic void Operation() {System.out.println(getClass() + "具体功能实现操作");}}

Decorator.java

package com.uc.decoratortest;public class Decorator extends Component {private Component component;public void setComponent(Component comp) {this.component = comp;}@Overridepublic void Operation() {// TODO Auto-generated method stubcomponent.Operation();}}

ConcreteDecoratorA.java

package com.uc.decoratortest;public class ConcreteDecoratorA extends Decorator{private String addedState;public void setAddedState(String addedState) {this.addedState = addedState;}@Overridepublic void Operation() {super.Operation();System.out.println("具体装饰对象A的操作:" + this.addedState);}}

ConcreteDecoratorB.java

Added Behavior");}@Overridepublic void Operation() {// TODO Auto-generated method stubsuper.Operation();addedBehavior();}}

UCTest

package com.uc.decoratortest;import org.junit.Test;public class UCTest {@Testpublic void test1() {ConcreteComponent comp = new ConcreteComponent();ConcreteDecoratorA cda = new ConcreteDecoratorA();ConcreteDecoratorB cdb = new ConcreteDecoratorB();cda.setComponent(comp);cda.setAddedState("UC Added State");cdb.setComponent(cda);cdb.Operation();}}/*output:class com.uc.decoratortest.ConcreteComponent具体功能实现操作具体装饰对象A的操作:UC Added Stateclass com.uc.decoratortest.ConcreteDecoratorB->Added Behavior*/

InputStream的UML:

FilterInputStream充当Decorator功能,它的子类,则为具体的装饰操作,FileInputstream为具体的操作类。

---------------------android培训、java培训、期待与您交流! -------------------------

0 0