Bridge Pattern

传统方式 不利于 将来扩展


Bridge Pattern


The Phone Question

// Brand.java
public interface Brand {
    void open();
    void close();
    void call();
}
// XiaoMi.java
public class XiaoMi implements Brand{
    public void open() {
        System.out.println("XiaoMi Open");
    }

    public void close() {
        System.out.println("XiaoMi Close");
    }

    public void call() {
        System.out.println("XiaoMi calling");
    }
}
//Vivo.java
public class Vivo implements Brand{
    public void open() {
        System.out.println("Vivo open");
    }

    public void close() {
        System.out.println("Vivo close");
    }

    public void call() {
        System.out.println("Vivo calling");
    }
}
// Phone.java
public abstract class Phone {
    //组合品牌
    private Brand brand;

    public Phone(Brand brand){
        this.brand = brand;
    }

    protected void open(){
        brand.open();
    }

    protected void close(){
        brand.close();
    }

    protected void call(){
        brand.call();
    }
}
//FoldedPhone.java
public class FoldedPhone extends Phone{
    public FoldedPhone(Brand brand){
        super(brand);   //调用父类的构造器,这里基本上都使用父类的方法。
    }

    public void open(){
        super.open();
        System.out.println("Folded Phone open");
    }

    public void close(){
        super.close();
        System.out.println("Folded Phone close");
    }

    public void call(){
        super.call();
        System.out.println("Folded Phone calling");
    }
}
//UpRightPhone.java
public class UpRightPhone extends Phone{
    public UpRightPhone(Brand brand){
        super(brand);
    }

    public void open(){
        super.open();
        System.out.println("UpRight Phone Open");
    }

    public void close(){
        super.close();
        System.out.println("UpRight Phone Close");
    }

    public void call(){
        super.call();
        System.out.println("UpRight Phone Calling");
    }
}
//Client.java
public class Client {
    public static void main(String[] args) {
        Phone phone = new FoldedPhone(new XiaoMi());
        phone.call();
        phone.close();
        phone.open();
    }
}

猜你喜欢

转载自www.cnblogs.com/nedrain/p/13198350.html
今日推荐