设计模式-07-桥接模式 -大战峡谷之巅

136 阅读1分钟

故事的开始要从一场3v3说起! 敌我双方要生成3个法师,,横坐标代表法师的属性, 纵坐标是他们要去的位置 我们选择的时候 他们之间并没有什么关系,因此要想办法将他们关联起来; 例如是酒桶这个坦克法师是去打辅助还是中单 还是上单的问题; 如果每次都生成坦克法师,在生成要去的位置,那么工作量太大;

image.png

桥接模式生成影响的原理是

生产对应的法师(刺客,坦克,脆皮); 在参数里选择对应的位置 (中单,辅助,上单);

这样就产生了关联!

1定义一个法师接口

package qiaojie;


//定义类型  是法师 刺客还是战士
public interface FaShi {

    void info();
}

2,生产三种法师(刺客,脆皮,坦克)

public class Cikefashi implements FaShi{

    @Override
    public void info() {
        System.out.print("刺客法师");
    }
}
public class TanKeFashi implements FaShi{
    @Override
    public void info() {
        System.out.print("坦克法师");

    }
}

3.产生对应的位置 在对应位置上设置对应的法师

public abstract class Mid {

    //组合 法师中单  坦克法师中单
    protected   FaShi fashi;

    public Mid(FaShi fashi){
        this.fashi=fashi;
    }

    public void info(){
        fashi.info();

    }
}


class ZelaSi extends Mid{

    public ZelaSi(FaShi faShi){
        super(faShi);
    }

    @Override
    public void info() {
        super.info();
        System.out.println("泽拉斯");
    }
}

class JiuTong extends Mid{

    public JiuTong(FaShi faShi){
        super(faShi);
    }

    @Override
    public void info() {
        super.info();
        System.out.println("酒桶");
    }
}

测试

public class test {

    public static void main(String[] args) {
        Mid mid=new ZelaSi(new Cikefashi());
        mid.info();


        Mid mid1=new JiuTong(new TanKeFashi());
        mid1.info();
    }
}