【GOF23設計模式】_橋接模式_多層繼承結構JAVA238

來源:http://www.bjsxt.com/
一、S03E238_01【GOF23設計模式】_橋接模式、多層繼承結構、銀行日誌管理、管理系統消息管理、人力資源的獎金計算
場景

未用橋接模式:

package com.test.bridge;

public interface Computer {
    void sale();
}

class Desktop implements Computer{
    @Override
    public void sale() {
        System.out.println("銷售臺式機");
    }
}
class Laptop implements Computer{
    @Override
    public void sale() {
        System.out.println("銷售筆記本");
    }
}
class Pad implements Computer{
    @Override
    public void sale() {
        System.out.println("銷售平板電腦");
    }
}

class LenovoDesktop extends Desktop{
    @Override
    public void sale(){
        System.out.println("銷售聯想臺式機");
    }
}
class LenovoLaptop extends Laptop{
    @Override
    public void sale(){
        System.out.println("銷售聯想筆記本");
    }
}
class LenovoPad extends Pad{
    @Override
    public void sale(){
        System.out.println("銷售聯想平板電腦");
    }
}

class ShenzhouDesktop extends Desktop{
    @Override
    public void sale(){
        System.out.println("銷售神舟臺式機");
    }
}
class ShenzhouLaptop extends Laptop{
    @Override
    public void sale(){
        System.out.println("銷售神舟筆記本");
    }
}
class ShenzhouPad extends Pad{
    @Override
    public void sale(){
        System.out.println("銷售神舟平板電腦");
    }
}

class DellDesktop extends Desktop{
    @Override
    public void sale(){
        System.out.println("銷售戴爾臺式機");
    }
}
class DellLaptop extends Laptop{
    @Override
    public void sale(){
        System.out.println("銷售戴爾筆記本");
    }
}
class DellPad extends Pad{
    @Override
    public void sale(){
        System.out.println("銷售戴爾平板電腦");
    }
}

場景分析

橋接模式核心要點

使用橋接模式:

package com.test.bridge;
/**
 * 電腦類型的維度
 */
public class Computer2 {
    protected Brand brand;

    public Computer2(Brand brand) {
        super();
        this.brand = brand;
    }

    public void sale(){
        brand.sale(); 
    }
}

class Desktop2 extends Computer2{
    public Desktop2(Brand brand) {
        super(brand);
    }
    @Override
    public void sale() {
        super.sale();
        System.out.println("銷售臺式機");
    }
}
class Laptop2 extends Computer2{
    public Laptop2(Brand brand) {
        super(brand);
    }
    @Override
    public void sale() {
        super.sale();
        System.out.println("銷售筆記本");
    }
}
package com.test.bridge;
/**
 * 品牌
 */
public interface Brand {
    void sale();
}

class Lenovo implements Brand{
    @Override
    public void sale() {
        System.out.println("銷售聯想電腦");
    }
}
class Dell implements Brand{
    @Override
    public void sale() {
        System.out.println("銷售戴爾電腦");
    }
}
//新增之前沒有的品牌,不用同時新增電腦類型(不用在Computer2中寫代碼)
class Shenzhou implements Brand{
    @Override
    public void sale() {
        System.out.println("銷售神舟電腦");
    }
}
package com.test.bridge;

public class Client {
    public static void main(String[] args) {
        //銷售聯想的筆記本電腦
        Computer2 c = new Laptop2(new Lenovo());
        c.sale();

        //銷售神舟的筆記本電腦
        Computer2 c2 = new Desktop2(new Shenzhou());
        c2.sale();
    }
}

橋接模式總結

橋接模式實際開發中應用場景

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章