• 【设计模式】—— 桥接模式Bridge


      前言:【模式总览】——————————by xingoo

      模式意图

      这个模式使用的并不多,但是思想确实很普遍。就是要分离抽象部分与实现部分。

      实现弱关联,即在运行时才产生依赖关系。

      降低代码之间的耦合。

      模式结构

    Abstraction 抽象部分的基类,定义抽象部分的基础内容。

    RefinedAbstraction 抽象部分的扩充,用于对基类的内容补充,添加特定场景的业务操作。

    Implementor 实现部分的基类,定义实现部分的基本内容。

    ConcreteImplementor 具体的实现类。

      应用场景

    1 不希望在抽象和它的实现部分之间有一个固定的绑定关系

    2 抽象部分以及实现部分都想通过子类生成一定的扩充内容

    3 对一个抽象的实现部分的修改对客户不产生影响

      代码结构

     1 package com.xingoo.test;
     2 /**
     3  * 抽象类基类
     4  * @author xingoo
     5  */
     6 abstract class Abstraction{
     7     abstract public void operation(Implementor imp);
     8 }
     9 /**
    10  * 实现类 基类
    11  * @author xingoo
    12  */
    13 abstract class Implementor{
    14     abstract public void operation();
    15 }
    16 /**
    17  * 重新定义的抽象类
    18  * @author xingoo
    19  */
    20 class RefinedAbstraction extends Abstraction{
    21     public void operation(Implementor imp){
    22         imp.operation();
    23         System.out.println("RefinedAbstraction");
    24     }
    25 }
    26 /**
    27  * 具体的实现类
    28  * @author xingoo
    29  */
    30 class ConcreteImplementorA extends Implementor{
    31     public void operation() {
    32         System.out.println("ConcreteImplementorA");
    33     }
    34 }
    35 /**
    36  * 具体的实现类
    37  * @author xingoo
    38  */
    39 class ConcreteImplementorB extends Implementor{
    40     public void operation() {
    41         System.out.println("ConcreteImplementorB");
    42     }
    43 }
    44 public class test {
    45     public static void main(String[] args){
    46         RefinedAbstraction abstraction = new RefinedAbstraction();
    47         abstraction.operation(new ConcreteImplementorA());
    48         
    49         abstraction.operation(new ConcreteImplementorB());
    50     }
    51 }
    52     

    运行结果

    ConcreteImplementorA
    RefinedAbstraction
    ConcreteImplementorB
    RefinedAbstraction
  • 相关阅读:
    如何理解「复位 」?
    menuconfig配置
    编译Linux内核过程中遇到的问题与解决
    解决qt 5.14版本 qt.network.ssl: QSslSocket::connectToHostEncrypted: TLS initialization faile问题
    认真教好软件工程
    2016同学们博客链接汇总
    车站订票系统可行性分析报告
    第四纪与地貌学(1)——长江口第四纪沉积物中构造与古气候耦合作用的探讨
    软件工程(1)——对书本的温习
    四则运算
  • 原文地址:https://www.cnblogs.com/xing901022/p/4058038.html
Copyright © 2020-2023  润新知