java设计模式之桥接模式

来源:互联网 发布:职业乞丐 数据 编辑:程序博客网 时间:2024/06/08 00:24

有时我们会遇到这样的业务场景,比如拿电脑来说,从类型上来看,他可以分为台式机、笔记本和平板电脑,从品牌上来看,他可以分为联想、华硕、戴尔、宏基、神舟等等,要建这些类之间的关系,就可能要建很多重复性的内容。比如联想下面有联想台式机、联想笔记本和联想平板电脑,戴尔下面有戴尔台式机、戴尔笔记本和戴尔平板电脑,这样把这些类全部建下来代码量将是非常庞大的,那么有没有一种相对简便的办法呢,那就要使用下面的桥接模式,它是用于产品的多维度发展,具体的代码实现如下:
品牌维度:

package com.bjsxt.bridge;/** * 品牌维度 *  * @author yufu * */public interface Brand {    void sale();}class Lenovo implements Brand {    @Override    public void sale() {        System.out.println("销售联想");    }}class Dell implements Brand {    @Override    public void sale() {        System.out.println("销售戴尔");    }}class Acer implements Brand {    @Override    public void sale() {        System.out.println("销售宏基");    }}

类型维度(需要持有对品牌维度的引用):

package com.bjsxt.bridge;public class Type {    Brand brand;    public Type(Brand brand) {        super();        this.brand = brand;    }    public void sale() {        brand.sale();    }}class Desktop extends Type {    public Desktop(Brand brand) {        super(brand);    }    @Override    public void sale() {        brand.sale();        System.out.println("销售台式机");    }}class Laptop extends Type {    public Laptop(Brand brand) {        super(brand);    }    @Override    public void sale() {        brand.sale();        System.out.println("销售笔记本");    }}class Pad extends Type {    public Pad(Brand brand) {        super(brand);    }    @Override    public void sale() {        brand.sale();        System.out.println("销售平板电脑");    }}

测试代码:

package com.bjsxt.bridge;public class Client {    public static void main(String[] args) {        // 销售联想笔记本        Brand brand = new Lenovo();        Type type = new Laptop(brand);        type.sale();    }}

输出结果:

销售联想销售笔记本
原创粉丝点击