美文网首页技术栈
2019-02-27——设计模式 桥接模式

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

作者: 烟雨乱平生 | 来源:发表于2019-02-27 19:26 被阅读1次

    特点

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

    主要角色

    • 抽象化(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()));
        }
    }
    

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

    相关文章

      网友评论

        本文标题:2019-02-27——设计模式 桥接模式

        本文链接:https://www.haomeiwen.com/subject/fmfquqtx.html