设计模式之桥梁模式10
背景
假如某老板有一房地产公司公司,专门卖房赚钱。另外最近ipod,衣服等赚钱,老板想开个专门山寨的各种公司。但是,老板只关注赚钱。具体的生产,销售,老板不管。
类图
代码实现
首先定义一个产品Product.java,可以被房地产,山寨等产品继承。
//定义一个产品
public abstract class Product {
//生产产品的动作
public abstract void beProduced();
//销售的动作
public abstract void beSelled();
}
定义房地产产品
public class Hourse extends Product{
@Override
public void beProduced() {
System.out.println("hourse produced ...");
}
@Override
public void beSelled() {
System.out.println("hourse selled ...");
}
}
定义一些山寨的产品
public class Ipod extends Product{
@Override
public void beProduced() {
System.out.println("ipod produced ...");
}
@Override
public void beSelled() {
System.out.println("ipod selled ...");
}
}
public class Clothes extends Product{
@Override
public void beProduced() {
System.out.println("clothes produced ...");
}
@Override
public void beSelled() {
System.out.println("clothes selled ...");
}
}
定义一个抽象的公司
//定义一个抽象公司
public abstract class Corp {
//这 个公司拥有的产品是什么
private Product product;
//初始化公司
public Corp(Product product){
this.product = product;
}
//公司赚钱的方式
public void makeMoney() {
this.product.beProduced();
this.product.beSelled();
}
}
房地产公司
public class HourceCorp extends Corp{
public HourceCorp(Hourse hourse) {
super(hourse);
}
public void makeMoney() {
super.makeMoney();
System.out.println("hourse make much money.");
}
}
山寨公司
public class CopyCorp extends Corp{
public CopyCorp(Product product) {
super(product);
}
public void makeMoney() {
super.makeMoney();
System.out.println("copy make less money.");
}
}
老板调用查看自己公司赚钱的情况
public class Client {
public static void main(String[] args) {
//老板主要业务,房地产公司
HourceCorp hourseCorp = new HourceCorp(new Hourse());
hourseCorp.makeMoney();
System.out.println();
//山寨公司-卖衣服
CopyCorp copyCorp = new CopyCorp(new Clothes());
copyCorp.makeMoney();
System.out.println();
//山寨公司-卖ipod
copyCorp = new CopyCorp(new Ipod());
copyCorp.makeMoney();
}
}
运行情况是这样的。
hourse produced ...
hourse selled ...
hourse make much money.
clothes produced ...
clothes selled ...
copy make less money.
ipod produced ...
ipod selled ...
copy make less money.