2019-02-27——设计模式 桥接模式

特点

如果说某个系统能够从多个角度来进行分类,且每一种分类都可能会变化,那么我们需要做的就是将这多个角度分离出来,使得他们能独立变化,减少他们之间的耦合,这个分离过程就使用了桥接模式,将抽象与实现分离,使它们可以独立变化。它是用组合关系代替继承关系来实现的,从而降低了抽象和实现这两个可变维度的耦合度。

主要角色

  • 抽象化(Abstraction)角色:定义抽象类,并包含一个对实现化对象的引用。
  • 扩展抽象化(Refined Abstraction)角色:是抽象化角色的子类,实现父类中的业务方法,并通过组合关系调用实现化角色中的业务方法。
  • 实现化(Implementor)角色:定义实现化角色的接口,供扩展抽象化角色调用。
  • 具体实现化(Concrete Implementor)角色:给出实现化角色接口的具体实现

实现

public interface IAge {
    int getAge();
}


public class ConcreteAge implements IAge{
    @Override
    public int getAge() {
        return 20;
    }
}


public abstract class AbstractGender {
    protected IAge impl;
    AbstractGender(IAge impl){
        this.impl = impl;
    }
    abstract String getGender();
}


public class RefinedGender extends AbstractGender{

    public RefinedGender(IAge impl) {
        super(impl);
    }

    @Override
    String getGender() {
        return "male";
    }

    public void createPerson(){
        System.out.println(String.format("{\"person\":{\"gender\":\"%s\",\"age\":\"%s\"}}",getGender(),this.impl.getAge()));
    }
}

桥接模式感觉使用的是正交思想

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1.初识桥接模式 将抽象部分与它的实现部分分离,使它们都可以独立地变化。 Abstraction:抽象部分的接口。...
    王侦阅读 4,503评论 0 7
  • 本文参考:http://www.oschina.net/question/1436074_140456 http:...
    端木轩阅读 8,943评论 0 5
  • 在正式介绍桥接模式之前,我先跟大家谈谈两种常见文具的区别,它们是毛笔和蜡笔。假如我们需要大中小3种型号的画笔,能够...
    justCode_阅读 5,759评论 0 7
  • 一、应用场景 设想如果要绘制矩形、圆形、椭圆、正方形,我们至少需要4个形状类,但是如果绘制的图形需要具有不同的颜色...
    QuantRuu阅读 4,153评论 0 51
  • (2014年参加春运列车乘务员志愿活动,支援春运随笔) 昨天凌晨,临7组的小伙伴们迈下绿皮车,登上了回学校的大巴,...
    foxygirl阅读 1,292评论 0 0

友情链接更多精彩内容