设计模式(七)--------------桥接模式

今天我来说一下桥接模式,桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。

听起来这个概念是十分难懂的,那么我来解释一下。如果一个类,也就是一个实物。它具有很多类的属性,按照属性所属类型的不同,可以实例化很多的对象,那么在类的声明时就会显得十分复杂难做。举一个例子,我们都知道电脑有很多种类型,比如笔记本电脑,台式电脑以及现在比较多掌上电脑。同时笔记本电脑的品牌有很多,比如联想,Dell,惠普等等。如果我们要声明这些类,就需要声明诸多的类,那么如果我需要声明一个新的品牌,在声明一个新的品牌的同时,我还需要声明这个品牌的电脑机型,这样维护起来就会很复杂。

那么我们可以找寻一个解决的方式,将商标作为属性注入到机型类中,让机型类可以自由的选择商标。

来看一下代码

public class Computer2 {
	
	protected Brand brand;
	
	public Computer2(Brand b) {
		this.brand = b;
	}
	
	public void sale(){
		brand.sale();
	}
	
}

class Desktop2 extends Computer2 {

	public Desktop2(Brand b) {
		super(b);
	}
	
	@Override
	public void sale() {
		super.sale();
		System.out.println("销售台式机");
	}
}

class Laptop2 extends Computer2 {
	
	public Laptop2(Brand b) {
		super(b);
	}
	
	@Override
	public void sale() {
		super.sale();
		System.out.println("销售笔记本");
	}
}

 

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("销售Dell电脑");
	}
	
}

class Shenzhou implements Brand {
	
	@Override
	public void sale() {
		System.out.println("销售神舟电脑");
	}
	
}

 这两个类是一种嵌套关系。在调用的时候只需要将相应的品牌注入到机型里面即可。

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

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值