了解桥模式

桥模式:将某个问题抽象的不同形式分别与该问题的具体实现部分相分离,使他们都可以独立变化,并能够动态结合。

      例如电视厂商海尔,长虹生产21寸,29寸电视机。从这里要将它们分离出来,就用到桥模式。电视机与电视机生产厂商挂桥,从而,分离出不同厂商的实现,与不同电视机型号的实现.

     下面看下uml

 

从上图可以看出,将实际抽象分离出来。

看下代码

创建电视机

public abstract class Television {
	//电视厂商
	protected TelevisionMaker televisionMaker;
	//收看电视
	abstract public void teleview(TelevisionMaker televisionMaker);
}

 

接下来创建生产厂商

public abstract class TelevisionMaker {
	abstract public void produce();
}

 

电视机的型号,即继承电视机类

public class Inch21 extends Television{
	
	public void teleview(TelevisionMaker televisionMaker) {
		System.out.println("21寸电视");
	}

}

 

public class Inch29 extends Television{
	
	public void teleview(TelevisionMaker televisionMaker) {
		System.out.println("29寸电视");
	}

}

 

下面是不同厂商,即继承生产厂商

 

public class ChangHong extends TelevisionMaker{

	public ChangHong(){
		System.out.println("长虹厂商");
	}
	
	public void produce() {
		System.out.println("长虹厂商");
	}
}

 

public class Haier extends TelevisionMaker{
	public Haier(){
		System.out.println("海尔厂商");
	}
	
	public void produce() {
		System.out.println("海尔厂商");
	}

}

 

这样就使用了桥模式,将原本繁杂的系统分离开来。如果根据需求变动,要增加电视机生产型号或者电视机生产厂商,只需要实现相对应的抽象类即可。

这样,我们也可以根据用户的需要,得到他所需要的电视机,如长虹厂商出厂的29寸电视机。

测试代码如下:

public class Client {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Inch29 i = new Inch29();
		i.teleview(new ChangHong());
	}
}

 结果:

       长虹厂商
       29寸电视

 

这便达到我们所需要的效果了。希望朋友指出错误与不到指出,谢谢

你可能感兴趣的:(设计模式)