• 桥接模式


    桥接模式(bridge)

    桥接模式核心要点:
      处理多层继承结构,处理多维度变化的场景,将各个维度设计成独立
      的继承结构,使各个维度可以独立的扩展在抽象层建立关联。

    桥接模式概念:
      桥接模式可以取代多层继承的方案。 多层继承违背了单一职责原则,复用性较差,类的个数也非常多。
      桥接模式可以极大的减少子类的个数,从而降低管理和维护的成本。桥接模式极大的提高了系统可扩展性,
      在两个变化维度中任意扩展一个维度,都不需要修改原有的系统,符合开闭原则。

    桥接模式实际开发中应用场景
      JDBC驱动程序
      AWT中的Peer架构
      银行日志管理:
        格式分类:操作日志、交易日志、异常日志
        距离分类:本地记录日志、异地记录日志
      人力资源系统中的奖金计算模块:
        奖金分类:个人奖金、团体奖金、激励奖金。
        部门分类:人事部门、销售部门、研发部门。
      OA系统中的消息处理:
        业务类型:普通消息、加急消息、特急消息
        发送消息方式:系统内消息、手机短信、邮件

    ex:
      商城系统中常见的商品分类, 以电脑为类, 如何良好的处理商品的分类销售的问题
      扩展性问题(类个数膨胀问题)
        1.如果要增加一个新的电脑类型,则要增加各个品牌下面的类,
        2.如果要增加一个新的品牌, 也要增加各种电脑类型的类
      违反单一职责原则: 一个类有两个引起这个类变化的原因

    //品牌
    public interface Brand {
        void sale();
    }
    class Lenovo implements Brand {
        @Override
        public void sale() {
            System.out.println("销售联想电脑");
        }
    }
    class Dell implements Brand {
        @Override
        public void sale() {
            System.out.println("销售Dell电脑");
        }
    }
    
    class Shenzhou implements Brand {
        
        @Override
        public void sale() {
            System.out.println("销售神舟电脑");
        }
    }
    //电脑类型的维度
    public class Computer2 {
    
        protected Brand brand;
    
        public Computer2(Brand b) {
            this.brand = b;
        }
    
        public void sale(){
            brand.sale();
        }
    }
    
    class Desktop2 extends Computer2 {    
    
        public Desktop2(Brand b) {
            super(b);
        }
        @Override
        public void sale() {
            super.sale();
            System.out.println("销售台式机");
        }
    }
    
    class Laptop2 extends Computer2 {
        public Laptop2(Brand b) {
            super(b);
        }
        @Override
        public void sale() {
            super.sale();
            System.out.println("销售笔记本");
        }
    }
    public class Client {
        public static void main(String[] args) {
            //销售联想的笔记本电脑
            Computer2  c = new Laptop2(new Lenovo());
            c.sale();
            
            //销售神舟的台式机
            Computer2 c2 = new Desktop2(new Shenzhou());
            c2.sale();
        }
    }
  • 相关阅读:
    数据结构之队列java版
    SPSS-相关性和回归分析(一元线性方程)案例解析(转)
    SPSS-非参数检验—两独立样本检验 案例解析(转)
    spss-非参数检验-K多个独立样本检验( Kruskal-Wallis检验)案例解析(转)
    SPSS-Friedman 秩和检验-非参数检验-K个相关样本检验 案例解析(转)
    SPSS-多重响应-频率和交叉表案例分析(问卷调查分析)(转)
    SPSS—回归—多元线性回归(转)
    SPSS—回归—曲线估计方程案例解析(转)
    SPSS—非线性回归(模型表达式)案例解析(转)
    SPSS—二元Logistic回归(转)
  • 原文地址:https://www.cnblogs.com/yslf/p/11277573.html
Copyright © 2020-2023  润新知