设计模式-桥梁模式

栏目: 后端 · 发布时间: 7年前

内容简介:定义抽象公司上方是模板方法下面是房地产公司

栗子

定义抽象公司

public abstract class Corp{
    // 公司生产内容
    protected abstract void produce();
    // 销售
    protected abstract void sell();
    // 赚钱
    public void makeMoney(){
        // 生产
        this.produce();
        // 销售
        this.sell();
    }
}

上方是模板方法

下面是房地产公司

public class HouseCorp extends Corp{
    // 盖房子
    protected void produce(){
        // 盖房子
    }
    // 卖房子
    protected void sell(){
        // 卖房子
    }
    // 赚钱
    public void makeMoney(){
        super.makeMoney();
        // 赚钱
    }
}

服装公司

public class ClothesCorp extends Corp{
    // 生产衣服
    protected void produce(){
        // 生产衣服
    }
    protected void sell(){
        // 出售衣服
    }
    public void makeMoney(){
        super.makeMoney();
        // 赚钱
    }
}

最后编写场景

public class Client{
    public static void main(String[] args){
        HouseCorp houseCorp = new HouseCorp();
        houseCorp.makeMoney();
        ClothesCorp clothesCorp = new ClothesCorp();
        clothesCorp.makeMoney();
    }
}

更改

企业改头换面,生产另外的产品

山寨公司

public class IPodCorp extends Corp{
    // 生产
    protected void produce(){
        // 生产
    }
    // 畅销
    protected void sell(){
        // 畅销
    }
    // 赚钱
    public void makeMoney(){
        super.makeMoney();
        // 赚钱
    }
}

赚钱

public class Client{
    public static void main(String[] args){
        // 房地产
        HouseCorp houseCorp = new HouseCorp();
        // 挣钱
        houseCorp.makeMoney();
        // 山寨公司
        IPodCorp ipodCorp = new IPodCorp();
        ipodCorp.makeMoney();
    }
}

继续更改

公司和产品分离,让其之间建立关系

// 抽象产品类
public abstract class Product{
    // 生产
    public abstract void beProducted();
    // 销售
    public abstract void beSelled();
}
// 房子
public class House extends Product{
    // 豆腐渣房子
    public void beProducted(){
        // 生产
    }
    // 销售
    public void beSelled(){
        // 销售
    }
}

继续

public class IPod extends Product{
    public void beProducted(){
        // 生产
    }
    public void beSelled(){
        // 销售
    }
}

下面是抽象公司类

public abstract class Corp{
    // 定义抽象产品对象
    private Product product;
    // 构造函数
    public Corp(Product product){
        this.product = product;
    }
    // 公司赚钱
    public void makeMoney(){
        // 生产
        this.product.beProducted();
        // 销售
        this.product.beSelled();
    }
}

定义房地产公司

public class HouseCorp extends Corp{
    // 定义House产品
    public HouseCorp(House house){
        super(house);
    }
    // 赚钱
    public void makeMoney(){
        super.makeMoney();
        // 赚钱
    }
}

山寨公司

public class ShanZhaiCorp extends Corp{
    // 产品
    public ShanZhaiCorp(Product product){
        super(product);
    }
    // 赚钱
    public void makeMoney(){
        super.makeMoney();
        // 赚钱
    }
}

最后书写场景

public class Client{
    public static void main(String[] args){
        House house = new House();
        // 房地产公司
        HouseCorp houseCorp = new HouseCorp(house);
        // 赚钱
        houseCorp.makeMoney();
        // 生产产品
        ShanZhaiCorp shanZhaiCorp = new ShanZhaiCorp(new IPod());
        ShanZhaiCorp.makeMoney();
    }
}

此时在目前状态下,若要生产服装,只需要继承Product类,定义一个服装类即可

public class Clothes extends Product{
    public void beProducted(){
        // 生产服装
    }
    public void beSelled(){
        // 卖衣服
    }
}

最后书写场景类

public class Client{
    public static void main(String[] args){
        House house = new House();
        // 房地产公司
        HouseCorp houseCorp = new HouseCorp(house);
        // 挣钱
        houseCorp.makeMoney();
        // 山寨公司生产
        ShanZhaiCorp.shanZhaiCorp = new ShanZhaiCorp(new Clothes());
        ShanZhai.makeMoney();
    }
}

总结

桥梁模式,抽象和实现解耦,需要的时候,将实现注入抽象。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

算法神探

算法神探

[美] 杰瑞米·库比卡 / 啊哈磊、李嘉浩 / 电子工业出版社 / 2017-2 / 65

《算法神探:一部谷歌首席工程师写的CS小说》围绕程序设计典型算法,精心编织了一个扣人心弦又趣味横生的侦探缉凶故事。小说主人公运用高超的搜索技巧和精深的算法知识,最终识破阴谋、缉拿元凶。其间,用二分搜索搜查走私船、用搜索树跟踪间谍、用深度优先搜索逃离监狱、用优先队列开锁及用最佳优先搜索追寻线索等跌宕起伏又富含算法精要的情节,让读者在愉悦的沉浸式体验中快速提升境界,加深对程序世界的理解。《算法神探:一......一起来看看 《算法神探》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

随机密码生成器
随机密码生成器

多种字符组合密码

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具