Java桥接模式简单版

一 代码

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();
    }
}

二 运行

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

三 类图

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值