标签:
桥接模式核心:处理多层继承结构,处理多维度变化的场景。将各个维度设计成独立的继承结构,使各个维度可以独立的扩展在抽象层建立关联。
桥接模式特点: 桥接模式可以取代多层继承的方案。多层继承违背了单一职责原则。复用性较差。类的个数也非常多。桥接模式可以极大的减少子类的个数,从而降低管理和维护的成本。 桥接模式极大的提高了系统可扩展性,在两个变化维度中任意扩展一个维度,都不需要修改原有的系统,符合开闭原则。 就像一个桥将两个变化的维度连接起来。各个维度都可以独立的变化,故称之为桥模式。
应用: 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(); } }
运行结果:
联想电脑
笔记本电脑
神州电脑
台式电脑
标签:
原文地址:http://www.cnblogs.com/wxisme/p/4553362.html