[设计模式分析]结构型模式之桥接模式

应用场景

桥接模式最典型的一个应用就是解决类爆炸的问题。
如下问题:
在这里插入图片描述
传统解决方案造成类爆炸:
在这里插入图片描述
桥接模式解决问题:
提到桥接模式就会反复的提到一句话:将抽象实现分离开来!
简单点说:就是指在一个软件系统的抽象化和实现化之间使用关联关系(组合或者聚合关系)而不是继承关系,从而使两者可以相对独立地变化,这就是桥接模式的用意
举一个简单例子:
该图其实就体现了 抽象与 实现之间的解耦!
在这里插入图片描述

//Action抽象类
public abstract class Action {
    protected Role role;
    public void setRole(Role role){
        this.role = role;
    }

    public abstract void diIt();

}
//walk类
public class Walk extends Action{

    @Override
    public void diIt() {
        // TODO Auto-generated method stub
        this.role.doSomeThing();
        System.out.println("我要走路了");
    }
}
//jump类
public class Jump extends Action{

    @Override
    public void diIt() {
        // TODO Auto-generated method stub
        this.role.doSomeThing();
        System.out.println("我要跳了");
    }
}
//pullSkill类
public class PullSkill extends Action{

    @Override
    public void diIt() {
        // TODO Auto-generated method stub
        this.role.doSomeThing();
        System.out.println("我要放技能");
    }
}
//Role接口
public interface Role {
    public void doSomeThing();

}
//Epimatium 
public class Epimatium implements Role{

    @Override
    public void doSomeThing() {
        // TODO Auto-generated method stub
        System.out.println("我是肉盾角色:");
    }
}
//Master 类
public class Master implements Role{

    @Override
    public void doSomeThing() {
        // TODO Auto-generated method stub
        System.out.println("我是法师角色:");
    }
}

//客户端
public class Client {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Role role = new Epimatium();
        Action walk = new Walk();
        walk.setRole(role);
        walk.diIt();

        Role role1 = new Master();
        Action jump = new Jump();
        jump.setRole(role1);
        jump.diIt();

        Action skill = new PullSkill();
        skill.setRole(role1);
        skill.diIt();
    }
}

看完这个例子我们就能轻而易举的解决上述的类爆炸问题了。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值