桥接模式(Bridge)(对象结构型模式)

参考文档:

1.设计模式-可复用面向对象软件的基础

2.http://blog.csdn.net/hguisu/article/details/7529194(设计模式(六)桥连模式Bridge(结构型))


桥接模式(Bridge)(对象结构型模式)

理论方面的知识,可以参考参考文档。

看一下bridge的结构:


书中讲的window例子的结构:


代码实现:

BrushPenAbstraction.java:
package com.rick.designpattern.bridge2;

/**
 * Created by MyPC on 2017/6/26.
 */
public abstract class BrushPenAbstraction {
    protected ImplementorColor implementorColor;


    public void setImplementorColor(ImplementorColor implementorColor) {
        this.implementorColor = implementorColor;
    }

    public abstract void operationDraw();

}
BigBrushPenRefinedAbstraction.java:
package com.rick.designpattern.bridge2;

/**
 * Created by MyPC on 2017/6/26.
 */
public class BigBrushPenRefinedAbstraction extends BrushPenAbstraction {
    @Override
    public void operationDraw() {
        System.out.println("big and " + implementorColor.bepaint() + " drawing");
    }
}
MiddleBrushPenRefinedAbstraction.java:
package com.rick.designpattern.bridge2;

/**
 * Created by MyPC on 2017/6/26.
 */
public class MiddleBrushPenRefinedAbstraction extends BrushPenAbstraction {
    @Override
    public void operationDraw() {
        System.out.println("Middle and " + implementorColor.bepaint() + " drawing");
    }
}
SmallBrushPenRefinedAbstraction.java:
package com.rick.designpattern.bridge2;

/**
 * Created by MyPC on 2017/6/26.
 */
public class SmallBrushPenRefinedAbstraction extends BrushPenAbstraction {
    @Override
    public void operationDraw() {
        System.out.println("Small and " + implementorColor.bepaint() + " drawing");
    }
}
ImplementorColor.java:
package com.rick.designpattern.bridge2;

/**
 * Created by MyPC on 2017/6/26.
 */
public class ImplementorColor {
    protected String color;

    public String bepaint() {
        return color;
    }
}
ConcreteImplementorBlack.java:
package com.rick.designpattern.bridge2;

/**
 * Created by MyPC on 2017/6/26.
 */
public class ConcreteImplementorBlack extends ImplementorColor {
    public ConcreteImplementorBlack() {
        this.color = "black";
    }
}
ConcreteImplementorBlue.java:
package com.rick.designpattern.bridge2;

/**
 * Created by MyPC on 2017/6/26.
 */
public class ConcreteImplementorBlue extends ImplementorColor {
    public ConcreteImplementorBlue() {
        this.color = "blue";
    }
}
ConcreteImplementorGreen.java:
package com.rick.designpattern.bridge2;

/**
 * Created by MyPC on 2017/6/26.
 */
public class ConcreteImplementorGreen extends ImplementorColor {
    public ConcreteImplementorGreen() {
        this.color = "green";
    }
}
ConcreteImplementorRed.java:
package com.rick.designpattern.bridge2;

/**
 * Created by MyPC on 2017/6/26.
 */
public class ConcreteImplementorRed extends ImplementorColor {

    public ConcreteImplementorRed() {
        this.color = "red";
    }


}
ConcreteImplementorWhite.java:
package com.rick.designpattern.bridge2;

/**
 * Created by MyPC on 2017/6/26.
 */
public class ConcreteImplementorWhite extends ImplementorColor {
    public ConcreteImplementorWhite() {
        this.color = "white";
    }
}
BrushPenFactory.java:
package com.rick.designpattern.bridge2;

/**
 * Created by MyPC on 2017/6/26.
 */
public class BrushPenFactory {
    private static BrushPenFactory _instance;
    private BrushPenAbstraction _BrushPenAbstraction;

    private BrushPenFactory() {
    }

    public static BrushPenFactory instance() {
        if (null == _instance) {
            _instance = new BrushPenFactory();
        }
        return _instance;
    }

    public BrushPenAbstraction makeBrushPen() {
        _BrushPenAbstraction = new SmallBrushPenRefinedAbstraction();
        _BrushPenAbstraction.setImplementorColor(new ConcreteImplementorBlack());
        return _BrushPenAbstraction;
    }
}
Client.java:
package com.rick.designpattern.bridge2;

/**
 * Created by MyPC on 2017/6/26.
 */
public class Client {

    public static void main(String[] args) {

        BrushPenFactory.instance().makeBrushPen().operationDraw();
    }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值