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

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

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

    应用: JDBC驱动程序

              AWT的peer架构      

              OA系统中的消息处理。

    桥接模式的优点:

             将实现与抽象解耦,不再与界面之间绑定。

             抽象和实现可以独立的扩展,不会影响到对方。

             对于具体的抽象类所做的改变不会影响到客户端的使用。

    Demo:

    package com.wxisme.bridge;
    
    /**
     * 品牌类型维度
     * @author Administrator
     *
     */
    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("戴尔电脑");
        }
        
    }
    
    class Shenzhou implements Brand {
        
        @Override
        public void sale() {
            System.out.println("神州电脑");
        }
        
    }
    
    /**
     * 电脑类型维度
     * @author Administrator
     *
     */
    public class Computer {
        
        protected Brand brand;
        
        public Computer(Brand b) {
            this.brand = b;
        }
        
        public void sale(){
            brand.sale();
        }
        
    }
    
    class Desktop extends Computer {
    
        public Desktop(Brand b) {
            super(b);
        }
        
        @Override
        public void sale() {
            super.sale();
            System.out.println("台式电脑");
        }
    }
    
    class Laptop extends Computer {
        
        public Laptop(Brand b) {
            super(b);
        }
        
        @Override
        public void sale() {
            super.sale();
            System.out.println("笔记本电脑");
        }
    }
    
    public class Client {
        public static void main(String[] args) {
            
            Computer  c1 = new Laptop(new Lenovo());
            c1.sale();
            
            Computer c2 = new Desktop(new Shenzhou());
            c2.sale();
            
            
        }
    }

    运行结果:
    联想电脑
    笔记本电脑
    神州电脑
    台式电脑

  • 相关阅读:
    android一个纠结的VFY错误
    icon在线编辑和查找工具
    增加Android可用内存
    android对大图片的缓存处理
    MySQL sql语句大全
    Canvas
    Docker 微服务教程
    Docker 入门教程
    项目管理
    JavaScript standard 代码规范的全文
  • 原文地址:https://www.cnblogs.com/wxisme/p/4553362.html
Copyright © 2011-2022 走看看