首页 > 学院 > 开发设计 > 正文

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

2019-11-08 00:34:25
字体:
来源:转载
供稿:网友

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

我们的目的是写作分享,读作面试,跟我一起念分(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菜鸟博客就到这里了。下一篇来个听起来更牛逼的。

——–解释器模式。。

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


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表