Simple version of the Java bridge mode

A Code

class Meal
{
    protected MealImp imp;
    public Meal()
    {
        imp = new AmericanMealImp();
    }
    public Meal(String type)
    {
        if (type.equals("American"))
            imp = new AmericanMealImp();
        if (type.equals("Italian"))
            imp = new ItalianMealImp();
    }

    public void getFirstCourse() {
        imp.getAppetizer();
    }

    public void getSecondCourse() {
        imp.getMeat();
    }

    public void getBeverage() {
        imp.getBeverage();
    }

    public void getDessert() {
        imp.getDessert();
    }
}

interface MealImp {
    public abstract void getAppetizer();
    public abstract void getSoup();
    public abstract void getSalad();
    public abstract void getFish();
    public abstract void getMeat();
    public abstract void getSorbet();
    public abstract void getPasta();
    public abstract void getBeverage();
    public abstract void getDessert();
    public abstract void getSandwich();
}
class AmericanMealImp implements MealImp {
    public void getAppetizer()   {
        System.out.println("开胃菜    : 烤干酪"); }
    public void getSoup()        {}
    public void getSalad()       {}
    public void getFish()        {}
    public void getMeat()        {
        System.out.println("肉食        :牛排"); }
    public void getPasta()       {}
    public void getBeverage()    {
        System.out.println("酒水        :啤酒"); }
    public void getDessert()     {
        System.out.println("餐后甜点:苹果派"); }
    public void getSorbet()      {}
    public void getSandwich()    {}
}
class ItalianMealImp implements MealImp {
    public void getAppetizer()   {
        System.out.println("开胃菜: 意大利蔬菜拼盘"); }
    public void getSoup()        {}
    public void getSalad()       {}
    public void getFish()        {}
    public void getMeat()        {
        System.out.println("肉食:      意大利柠檬香煎鸡排"); }
    public void getPasta()       {}
    public void getCheesePlate() {}
    public void getBeverage()    {
        System.out.println("酒水:  卡布奇诺咖啡"); }
    public void getDessert()     {
        System.out.println("餐后甜点:   冰淇淋"); }
    public void getSorbet()      {}
    public void getSandwich()    {}
}

public class CustomerBridgeDemo {

    private Meal meal;

    public CustomerBridgeDemo(Meal aMeal) { meal = aMeal; }

    public void eat() {
        meal.getFirstCourse();
        meal.getSecondCourse();
        meal.getBeverage();
        meal.getDessert();
    }

    public static void main(String[] args) {
        Meal aMeal = null;
        if (args.length == 0) {
            aMeal = new Meal();
        }
        else if (args.length == 1) {
            if (!(args[0].equals("American")) && !(args[0].equals("Italian")) ) {
                System.err.println("输入参数有误!");
                System.err.println("正确用法: java Customer [American|Italian]");
                System.exit(1);
            }
            else {
                aMeal = new Meal(args[0]);
            }
        }
        else { // error
            System.err.println("输入参数有误!");
            System.err.println("正确用法: java Customer [American|Italian]");
            System.exit(1);
        }

        CustomerBridgeDemo cus = new CustomerBridgeDemo(aMeal);
        cus.eat();
    }
}

Two runs

开胃菜    : 烤干酪
肉食        :牛排
酒水        :啤酒
餐后甜点:苹果派

Three 类图

Guess you like

Origin blog.csdn.net/chengqiuming/article/details/94293287