9.设计模式-桥接模式

所谓桥接模式即为搭建中间关系的一种模式。举个网上比较流行的例子。如果我们要画一种画,需要大中小三种笔,红,蓝,黄,绿,紫五种颜色。那如果我是准备彩笔的话,我得准备多少支笔呢?我得准备3*5=15种吧。也就是大的需要准备五种颜色的笔,中的也要准备五种颜色的笔,小的也要准备五种颜色的笔。但如果我用毛笔+墨砚呢?那只需要3支笔,5种颜色的墨砚,我大的画完一种颜色,洗了,又涂抹另外一种颜色画。这样就只需要3+5=8个材料。造成第一种需要15中材料的原因是什么呢?就是因为笔本身和颜色本身耦合在一起了。这个在代码中就说明了类和其实现的功能耦合在一起了。那么为了解耦,我们只需要进行一个引用,就达到了拆分的目的。

定义一个color接口

public interface Color {
    void drawColor();
}

定义其实现

public class GreenColor implements Color {
    @Override
    public void drawColor() {
        System.out.println("我能画绿色");
    }
}
public class BlackColor implements Color {
    @Override
    public void drawColor() {
        System.out.println("我能画黑色");
    }
}
public class RedColor implements Color {
    @Override
    public void drawColor() {
        System.out.println("我能画红色.....");
    }
}

定义一个笔的抽象类

在抽象类里面引用颜色接口,供实现类不同的调用方法。

public abstract class Pen {
    public Color color;
    public void setColor(Color color){
        this.color=color;
    }
    public abstract void draw();
}
public class BigPen extends Pen {
    @Override
    public void draw() {
        System.out.println("我是一支大笔");
        color.drawColor();
    }
}
public class MidPen extends Pen {
    @Override
    public void draw() {
        System.out.println("我是一支中性笔");
        color.drawColor();
    }
}
public class SmallPen extends Pen{
    @Override
    public void draw() {
        System.out.println("我是一支小笔");
        color.drawColor();
    }
}
public class MainTest {
    public static void main(String[] args) {
        Pen pen = new BigPen();
        Color redColor  = new RedColor();
        Color blackColor = new BlackColor();
        pen.setColor(redColor);
        pen.draw();
        System.out.println("............");
        pen.setColor(blackColor);
        pen.draw();

    }
}
我是一支大笔
我能画红色.....
............
我是一支大笔
我能画黑色
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页