具体的装饰对象,给内部持有的具体被装饰对象,增加具体的职责。
5.类图:
6 具体实现
abstractcomponent类:
phone.java
package com.heima.decorate; public interface Phone { public void call(); public void attribute(); }abstractDecorator类:
AbstractDecorator.java
package com.heima.decorate; public abstract class AbstractDecotator implements Phone { private Phone phone; public void setPhone(Phone phone) { this.phone = phone; } public void call() { phone.call(); } public void attribute() { phone.attribute(); } } component类
Iphone.java
package com.heima.decorate; public class Iphone implements Phone { public void attribute() { System.out.println("美国产"); } public void call() { System.out.println("用iphone打电话"); } } Decorator类:
RealDecorator.java
package com.heima.decorate; public class RealDecorate extends AbstractDecotator { @Override public void call() { super.call(); recall(); System.out.println("这是RealDecorateA"); } public static void recall(){ System.out.println("打长途电话"); } } test类:
package com.heima.decorate; public class TestDecorate { /** * @param args */ public static void main(String[] args) { Iphone ip=new Iphone(); RealDecorate rd=new RealDecorate(); rd.setPhone(ip); rd.call(); } } 打印结果:
用iphone打电话 打长途电话 这是RealDecorateA
转载自:http://www.cnblogs.com/chenxing818/p/4705919.html