桥梁模式

桥梁模式

桥梁模式:将抽象和实现解耦,使得两者可以独立地变化。
角色:1.Abstraction抽象化角色:定义出该角色的行为,同时保存一个对实现化角色的引用。
2.Implementor实现化角色:定义角色必需的行为和属性。
3.RefunedAbstraction修正抽象化角色:引用实现化角色对抽象话角色进行修正。
4.ConcreteImplementor具体实现化角色:实现具体的方法。
适用场景:不希望或不适用使用继承的场景。接口或者抽象类不稳定的场景。(即容易变化)
具体实现(bridge):公司通过生产产品赚钱

通用实现

1.创建抽象化角色

/**
 * 抽象公司类
 * 抽象化角色
 */
public class Corp {
    private Product product;
    public Corp(Product product){
        this.product = product;
    }

    //利用产品完成逻辑
    public  void makeMoney(){
        this.product.beProducted();
        this.product.beSelled();
    }
}

2.创建具体抽象化角色-房地产公司

/**
 * 房地产公司
 */
public class HouseCorp extends Corp{
    public HouseCorp(House house){
        super(house);
    }

    @Override
    public void makeMoney() {
        super.makeMoney();
        System.out.println("房地产公司赚钱");
    }
}

3.创建具体抽象化角色-山寨公司(山寨公司不确定买什么,这样的设计,如果山寨公司要卖一个新的东西,那么只需要创建一个实现化角色就可以了,并不会影响到山寨公司内部实现)

/**
 * 具体实现类
 * ipad产品
 */
public class ShanzhaiCorp extends Corp {
    public ShanzhaiCorp(Product product){
        super(product);
    }

    @Override
    public void makeMoney() {
        super.makeMoney();
        System.out.println("山寨公司赚钱");
    }
}

4.创建抽象实现化角色

/**
 * 抽象产品类
 * 抽象实现化角色
 */
public abstract class Product {
    //被生产
    public abstract void beProducted();
    //被卖出赚钱
    public abstract void beSelled();
}

5.创建两个具体实现化角色

/**
 * 具体实现化角色
 * 房子产品
 */
public class House extends Product {
    @Override
    public void beProducted() {
        System.out.println("房子被生产");
    }

    @Override
    public void beSelled() {
        System.out.println("房子被卖出赚钱");
    }
}
 	/**
 * 具体实现类
 * ipad产品
 */
public class Ipad extends Product {
    @Override
    public void beProducted() {
        System.out.println("ipad被生产");
    }

    @Override
    public void beSelled() {
        System.out.println("ipad被卖出赚钱");
    }
}

6.创建场景测试类

/**
 * 场景测试类
 */
public class Client {
    public static void main(String[] args) {
        House house = new House();
        Corp hosuseCorp = new HouseCorp(house);
        hosuseCorp.makeMoney();

        Ipad ipad = new Ipad();
        Corp ipadCorp = new ShanzhaiCorp(ipad);
        ipadCorp.makeMoney();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值