1. 程式人生 > 其它 >設計模式--裝飾模式

設計模式--裝飾模式

類圖

原始碼

CellPhone.java
package decoratorPattern;

public abstract  class CellPhone {
    public abstract void receiveCall();
}

ComplexPhone.java
package decoratorPattern;

public class ComplexPhone extends PhoneDecorator{

    public ComplexPhone(CellPhone phone) {
        super(phone);
    }
    
public void receiveCall() { super.receiveCall(); System.out.println("燈光閃爍提示"); } } JarPhone.java package decoratorPattern; public class PhoneDecorator extends CellPhone{ private CellPhone phone=null; public PhoneDecorator(CellPhone phone) { if(phone!=null){
this.phone = phone; }else{ this.phone = new SimplePhone(); } } @Override public void receiveCall() { phone.receiveCall(); } } SimplePhone.java package decoratorPattern; public class SimplePhone extends CellPhone{ @Override public
void receiveCall() { System.out.println("聲音提示"); } } PhoneDecorator.java package decoratorPattern; public class PhoneDecorator extends CellPhone{ private CellPhone phone=null; public PhoneDecorator(CellPhone phone) { if(phone!=null){ this.phone = phone; }else{ this.phone = new SimplePhone(); } } @Override public void receiveCall() { phone.receiveCall(); } } Client.java package decoratorPattern; public class Client { public static void main(String a[]){ CellPhone p1 = new SimplePhone(); p1.receiveCall(); System.out.println(); CellPhone p2 = new JarPhone(p1); p2.receiveCall(); System.out.println(); CellPhone p3 = new ComplexPhone(p2); p3.receiveCall(); } }

測試截圖