设计模式之桥梁(桥接)模式

描述:桥接模式最大特点是抽象与实现解耦,不对现有的类进行修改,只需要扩展(继承当前抽象类)即可实现业务逻辑。抛出的例子是现在有服装公司生产销售并服装盈利,电子公司生产电子产品销售并盈利,那我以后增加房地产公司就只需要继承Crop和Product就可以实现买房子销售盈利。


UML类图:



测试代码

1、抽象Crop类

package com.java.bridge;

public abstract class Crop {
	
	protected Product product;
	
	public Crop(Product product) {
		this.product = product;
	}

	protected abstract void makeMoney();
}

2、具体Crop

package com.java.bridge;

public class ClothesCrop extends Crop {

	public ClothesCrop(Product product) {
		super(product);
	}

	@Override
	protected void makeMoney() {
		product.produce();
		product.sell();
	}

}
package com.java.bridge;

public class ElecCrop extends Crop {

	public ElecCrop(Product product) {
		super(product);
	}

	@Override
	protected void makeMoney() {
		product.produce();
		product.sell();
	}

	

}

3、抽象Product类

package com.java.bridge;

public abstract class Product {
	
	protected abstract void produce();
	
	protected abstract void sell();
}

4、具体Product
package com.java.bridge;

public class Clothes extends Product {

	@Override
	protected void produce() {
		System.out.println("服装生产过程是这样的...");
	}

	@Override
	protected void sell() {
		System.out.println("服装销售过程是这样的...");
	}

}
package com.java.bridge;

public class Elec extends Product {

	@Override
	protected void produce() {
		System.out.println("电子产品生产过程是这样的...");
	}

	@Override
	protected void sell() {
		System.out.println("电子产品销售过程是这样的...");
	}

}

5、测试类

package com.java.bridge;

public class BridgeTest {

	public static void main(String[] args) {
		//服装公司
		Clothes cs = new Clothes();
		ClothesCrop ccp = new ClothesCrop(cs);
		ccp.makeMoney();
		
		//电子公司
		Elec elec = new Elec();
		ElecCrop ep = new ElecCrop(elec);
		ep.makeMoney();
	}

}

6、测试结果:

服装生产过程是这样的...
服装销售过程是这样的...
电子产品生产过程是这样的...
电子产品销售过程是这样的...


猜你喜欢

转载自blog.csdn.net/liangtianmeng/article/details/72416516