zoukankan      html  css  js  c++  java
  • 简易的设计模式——桥梁模式

    定义

    将抽象和实现解耦,使得两者可以独立地变化。

    桥梁模式

    4个角色

    在抽象模式中有4个不同的角色。

    1. 抽象化角色 Abstracttion
    2. 实现化角色 Implementator
    3. 修正抽象化 RefinedAbstraction
    4. 具体实现化角色 ConcreteImplementator

    抽象角色引用实现化角色

    代码实现

    Abstracttion.java

    public abstract class Abstracttion {
    
        private Implementator implementator;
    
        public Abstracttion(Implementator implementator ){
            this.implementator = implementator;
        }
    
        public void request(){
            this.implementator.doSomething();
        }
    
        public Implementator getImp(){
            return this.implementator;
        }
    
    }
    
    

    RefinedAbstraction.java

    public class RefinedAbstraction extends Abstracttion {
    
        public RefinedAbstraction(Implementator implementator) {
            super(implementator);
        }
    
        @Override
        public void request() {
            super.request();
            super.getImp().doAnything();
        }
    }
    
    
    

    Implementator.java

    public interface Implementator {
        //basic method
        public void doSomething();
        public void doAnything();
    }
    
    

    ConcreteImplementator1.java

    public class ConcreteImplementator1 implements Implementator {
        @Override
        public void doSomething() {
            //实现业务
        }
    
        @Override
        public void doAnything() {
            //实现业务
        }
    }
    
    

    ConcreteImplementator2.java

    public class ConcreteImplementator2 implements Implementator{
        @Override
        public void doSomething() {
            //实现业务
        }
    
        @Override
        public void doAnything() {
            //实现业务
        }
    }
    
    

    桥梁模式的优点

    • 抽象和实现分离:

      实现可以不受抽象的约束,不用被绑定在一个固定的抽象层次上面。

    • 优秀的扩展能力:

      想要增加也没有问题

    • 实现细节对客户透明:

      客户不用关心细节实现,它已经由抽象层通过聚合关系完成了封装。

  • 相关阅读:
    什么是 bean 的自动装配?
    什么是 Spring 的内部 bean?
    什么是 Spring 的 MVC 框架?
    Spring AOP and AspectJ AOP 有什么区别?
    解释 JDBC 抽象和 DAO 模块?
    volatile 类型变量提供什么保证?
    一个 Spring Bean 定义 包含什么?
    什么是 Spring MVC 框架的控制器?
    使用 Spring 访问 Hibernate 的方法有哪些?
    什么是 Callable 和 Future?
  • 原文地址:https://www.cnblogs.com/whthomas/p/4420891.html
Copyright © 2011-2022 走看看