zoukankan      html  css  js  c++  java
  • 设计模式-桥接模式

    有点难理解,主要有4个角色 抽象调用 具体调用  抽象实现 具体实现。大概的意思就是抽象调用调用抽象实现。由具体调用和具体实现来拓展功能

    抽象实现

    public interface Implemter {
        void implemt();
    }

    具体实现

    public class ImplemterImpl implements Implemter {
        @Override
        public void implemt() {
            System.out.println("具体实现的操作");
        }
    }

    抽象调用

    abstract class AbstractRequester {
        protected Implemter imp;
    
        public AbstractRequester(Implemter implemter) {
            this.imp = implemter;
        }
        public abstract void request();
    }

    具体调用

    public class AbstractRequestImpl extends AbstractRequester {
        public AbstractRequestImpl(Implemter imp) {
            super(imp);
        }
    
        @Override
        public void request() {
        imp.implemt();
        }
    }

    测试类

    public class Client {
        public static void main(String[] args) {
            ImplemterImpl implemter = new ImplemterImpl();
            AbstractRequestImpl abstractRequest = new AbstractRequestImpl(implemter);
            abstractRequest.request();
    
        }
    }

    总结:在桥接模式里,调用类关联实现类对象,抽象调用和抽象实现抽象出方法,由具体调用调用具体实现来实现拓展,哪怕以后功能进行拓展也无需更改抽象类,只需继承/实现来重写超类中的方法。

    应用场景:当一个类里有两个独立拓展时,或者不希望因为多层次继承来增加项目的复杂度时,可以使用桥接者模式,调用类和实现类各有一个超类,重写方法即可完成修改。

    不和别人一样,不复制只真正理解
  • 相关阅读:
    解析XML文件时做得修改
    NSOprationQueue 与 GCD 的区别与选用
    UIPickerView(选择器)
    iOS NSDatePicker
    Http协议三次握手过程
    iOS之KVO和KVC
    iOS中使用RSA对数据进行加密解密
    Demo1_iOS9网络适配_改用更安全的HTTPS
    layer 的常用属性
    IOS OC声明变量在@interface括号中与使用@property的区别
  • 原文地址:https://www.cnblogs.com/Vinlen/p/12785379.html
Copyright © 2011-2022 走看看