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

    1. 定义

    桥接模式将抽象部分与它的实现部分分离,使它们都可以独立的变化。

    2. 类图

    3. Example

    假如你是个小有所成的成功人士,开了家公司,生产什么商品全靠追风,哪个赚钱生产哪个,请写出商品生产、销售的过程,要求商品变化时,代码尽可能少变化。

    package com.gitlearning.hanldegit.patterns.cor.bridge;
    
    public abstract class Corp {
        Product product;
    
        public Corp(Product product) {
            this.product = product;
        }
    
        abstract void makeMoney();
    }
    
    class FakeCorp extends Corp {
    
        public FakeCorp(Product product) {
            super(product);
        }
    
        @Override
        void makeMoney() {
            product.beProduced();
            product.beSelled();
        }
    }
    
    interface Product {
        void beProduced();
        void beSelled();
    }
    
    class IPod implements Product {
    
        @Override
        public void beProduced() {
            System.err.println("produce : ipod" );
        }
    
        @Override
        public void beSelled() {
            System.err.println("sell: ipod");
        }
    }
    
    class Toy implements Product {
    
        @Override
        public void beProduced() {
            System.err.println("produce : toy" );
        }
    
        @Override
        public void beSelled() {
            System.err.println("sell : toy" );
        }
    }
    
    
    class Test {
        public static void main(String[] args) {
            FakeCorp fakeCorp = new FakeCorp(new IPod());
            fakeCorp.makeMoney();
    
            fakeCorp = new FakeCorp(new Toy());
            fakeCorp.makeMoney();
        }
    }
    

    输出如下:

    produce : ipod
    sell: ipod
    produce : toy
    sell : toy
    
    

    个人理解:

    桥接模式好像是这样的:商品可以被生产和销售,这进行了一次抽象;而公司依赖于不同的产品,则对应于类图左侧的抽象。公司赚取具体是依靠产品的,因此产品可当做右侧的implentor。

    4. 使用

    1. 不希望或不适用使用继承的场景
    2. 接口或抽象类不稳定的场景
    3. 重用性要求较高的场景

    5.其他

    优点:

    1. 抽象和实现分离
    2. 优秀的扩充能力
    当你准备好了,机会来临的时候,你才能抓住
  • 相关阅读:
    机器学习理论基础
    Python 2/3 安装与运行环境设置
    connect/express 的参考
    Koa2 的安装运行记录(二)
    iOS如何才能在招聘中表现得靠谱?
    游戏本地化不止是翻译,还有……
    IOS 判断当前UIViewController 是否正在显示
    获取iOS应用中当前处于Activity状态的ViewController
    APP UI设计趋势:为好设计而动
    实现ios后台缩略图模糊的一种方法
  • 原文地址:https://www.cnblogs.com/studentytj/p/12404895.html
Copyright © 2011-2022 走看看