安卓菜鸟--桥接设计模式

接触安卓也蛮久了,到现在面试被问到设计模式。。也是颇有答不上来的感觉,总有一种。。这个我知道,然而我并说不出来,我用了。。但是我不知道他叫什么。。从今天开始,整理一系列的设计模式。

我们的目的是写作分享,读作面试,跟我一起念分(mian)享(shi)

好了,不废话

一句话概括,将抽象与实现分离,使他们都可以独立的变化。。

这里写图片描述

网上拷贝的UML图,看不懂没事。。

我们来举例。。面试的时候就讲这个。。咖啡。

先建立一个咖啡的类,咖啡有各种品种,反正就乌漆麻黑一片,谁知道啊。。

再建立一个咖啡的填充物类,你喜欢加盐辣椒都可以啊。反正总结一下,我是加东西。。

代码简单写写,如下。。

public abstract class CoffeeAdditives {
    public abstract String something();//咖啡添加物,客人要什么,我们给什么,现在自然不能确定了
}
public abstract class Coffee {
    protected CoffeeAdditives addtives;//咖啡的添加物

    protected Coffee(CoffeeAdditives addtives){
        this.addtives =addtives;//你买咖啡,肯定要选个添加物嘛
    }

    public abstract void makeCoffee();//咖啡需要被制作,但是怎么制作,得看具体情况
}

你可以看到,一种不知道品种的咖啡,他有一种添加物。。这2者建立了桥接的关系(咖啡里有添加物,不管你子类怎么实现,管你是什么咖啡,你里面必然有添加物),这就是桥接设计模式了。。

那么你现在想喝一杯甜的中国咖啡。。该怎么做。。
建立实现类,中国咖啡,他继承了咖啡。

public class ChinaCoffee extends Coffee {

    protected ChinaCoffee(CoffeeAdditives addtives) {
        super(addtives);
    }

    @Override
    public void makeCoffee() {
        System.out.println("中国的"+addtives+"咖啡");//中国的咖啡,并不知道自己往里面加了什么。
    }
}

然后甜的,那来个糖类,他继承了添加物。

public class Sugar extends CoffeeAdditives {
    @Override
    public String something() {
        return "甜的";
    }
}

这添加物有点悲剧,他也不知道自己到底会被谁添加。

我们再建立一个客户,你去点咖啡了。。首先,你点了一杯咖啡,然后,是甜的。。

public class Customer {
    //进店铺,展柜的,我要点咖啡,中国,甜的
    //于是老板给准备了糖跟中国咖啡
    //于是展柜的从菜单里找到了中国甜咖啡
    public void chinaAndSuger(){
        Sugar sugar=new Sugar();//糖,属于添加物
        ChinaCoffee chinaCoffee=new ChinaCoffee(sugar);//把糖加到中国咖啡里去
        chinaCoffee.makeCoffee();//制做中国甜咖啡
    }
}

现在又来个客户,接下去,换你来了。。他要泰国的甜咖啡。这时候你要做什么?

对了,你只需要买些可以添加东西的泰国咖啡就可以了,因为添加的糖你已经有了。

public class ThailandCoffee extends Coffee {

    protected ThailandCoffee(CoffeeAdditives addtives) {
        super(addtives);
    }

    @Override
    public void makeCoffee() {
        System.out.println("泰国的"+addtives+"咖啡");//买来泰国咖啡,不管添加物是什么
    }
}

你会发现,糖里面的代码,你一点都不需要动,他也已经加入了泰国咖啡里,为啥,因为他是添加物啊。这就是桥接模式了。

你可以试着把泰国苦咖啡制作出来。。

然后,你可以试试做中国甜咖啡。。

然后换下笨蛋方法。。

你写一个类,叫中国甜咖啡类。然后老板需求改了,要你换泰国苦咖啡。好吧,重写一个泰国苦咖啡。然后老板需求又改了,泰国甜咖啡,你发现,买中国咖啡的时候,买过了啊,操。复制粘贴去,于是,多了 一个泰国甜咖啡类。然后,你发现,你重复了一份泰国的代码,跟你跟糖的代码。。

是不是很low是不是很low 。。

这就是解耦哈。。以后复制的时候,想一下,是不是哪里写的不好了。。

或许,你说,这文章,这B简单,老子天天这么用。。那好,我问一句,你知道他叫桥接模式嘛?

这时候,你又问了,知道桥接能干嘛?这还用问么?装逼啊 。装一个大大的B。

第一篇lowB菜鸟博客就到这里了。下一篇来个听起来更牛逼的。

——–解释器模式。。

别一碰到面试就特么单例,工厂,懒汉,恶汉。俗不可耐有木有啊有木有。面试官问起来,就讲高大上名字,就讲例子,怎么滴吧。舔我啊。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值