设计模式——桥接模式(Bridge)

桥接模式的核心思想是将抽象与实现分离,使它们都可以独立的变化而不互相影响,目的是脱耦。

1、模式中的角色

抽象角色(Abstraction 接口):给出抽象化定义并持有一个实现化对象的引用。

修正抽象化角色(Refined Abstraction类):扩展抽象化角色,改变和修正父类对抽象化的定义。

实现化角色(Implementor接口):给出实现化的接口角色的接口,但不给出具体的实现。

具体实现化角色(Concrete Implementor类):给出实现化角色接口的具体实现。


2、角色关系图


3、实例

描述:现在有多种汽车,每种汽车分运输客人和运输货物

扫描二维码关注公众号,回复: 2976833 查看本文章

a.抽象角色(Vehicle接口)

package com.interfaces;

public abstract class Vehicle {
	private Transport implementor;
	
	public void transport(){
		implementor.transport();
	}
	public Transport getImplementor() {
		return implementor;
	}
	public void setImplementor(Transport implementor) {
		this.implementor = implementor;
	}
}

b.修正抽象化角色(Train类和Car类)

Train类:

package com.vehicleImpl;

import com.interfaces.Vehicle;

public class Train extends Vehicle{

	@Override
	public void transport() {
		// TODO Auto-generated method stub
		System.out.print("Train: ");
		super.transport();
	}

	
}

Car类:

package com.vehicleImpl;

import com.interfaces.Vehicle;

public class Car extends Vehicle {

	@Override
	public void transport() {
		// TODO Auto-generated method stub
		System.out.print("car: ");
		super.transport();
	}

	
}
c.实现化角色(Transport接口)

package com.interfaces;

public interface Transport {

	public abstract void transport();
}
d. 具体实现化角色(PersonTransport类和GoodsTransport类)

PersonTransport类:

package com.transportImpl;

import com.interfaces.Transport;

public class PersonTransport implements Transport {

	@Override
	public void transport() {
		// TODO Auto-generated method stub
		System.out.print("Transport person\n");
	}
}

GoodsTransport类
package com.transportImpl;

import com.interfaces.Transport;

public class GoodsTransport implements Transport{

	@Override
	public void transport() {
		// TODO Auto-generated method stub
		System.out.print("Transport goods\n");
	}

	
}


后记:

点点滴滴

猜你喜欢

转载自blog.csdn.net/LClansefengbao/article/details/37930985