JAVA设计模式-从抽象与实现说桥接模式
来源:互联网 发布:嘉兴学院网络管理中心 编辑:程序博客网 时间:2024/05/22 04:57
将抽象部分与实现部分分离,使它们都可以独立的变化。
——《设计模式》GOF
再结合GOF的设计模式说明,很容易就理解为什么是命名为桥接。
抽象的是接口,实现的是类。
在我们的代码中,当传入对象参数而不是基本数据类型参数的时候,我们有时候会传入2种类型的参数。比如
public void menthd(List list)
public void method1(ArrayList arrayList)
这两种有一个最大的区别,ArrayList 是 List 的实现类,当我们调用method方法的时候,你可以传入的参数是ArrayList 和 LinkedList,但是调用第二种方法你只能传入ArrayList,这样很明显就有缺陷了,当ArrayList不满足我们需求的时候,我们必须要重写一个method1方法,这样对我们的代码结构是很不利,也违法了JAVA设计的开闭原则。
拿出这个我们写出实际的代码,当然我们这里不再用ArrayList做演示。。
先定义出接口
- public interface TestInterface {
- public void method();
- }
再来一个实现类
- public class TestInterfaceImpl1 implements TestInterface{
- @Override
- public void method() {
- System.out.println("需求1");
- }
- }
- public class Bridge {
- public void test(TestInterfaceImpl1 impl1){
- impl1.method();
- }
- }
测试代码:
- public class Test {
- public static void main(String[] args) {
- Bridge bridge = new Bridge();
- TestInterfaceImpl1 impl1 = new TestInterfaceImpl1();
- bridge.test(impl1);
- }
- }
输出:需求1
然后,我们的需求改变,我们要将TestInterface 中method方法实现改为另一种需求2的实现方式,那么你这里需要修改的地方就比较多了。。。
必须要做的事情,新增实现类。
- public class TestInterfaceImpl2 implements TestInterface{
- @Override
- public void method() {
- System.out.println("需求2");
- }
- }
将Bridge修改成
- public class Bridge {
- public void test(TestInterface impl){
- impl1.method();
- }
- }
测试类:
- public class Test {
- public static void main(String[] args) {
- Bridge bridge = new Bridge();
- TestInterface impl1 = new TestInterfaceImpl1();
- bridge.test(impl1);
- TestInterface impl2 = new TestInterfaceImpl2();
- bridge.test(impl2);
- }
- }
输出:
需求1
需求2
这就是GOF所说的将抽象部分与实现部分分离,使它们都可以独立的变化。
在这套代码中,抽象的是接口,将抽象的接口与实现部分分离,传入的是向上引用的类对象,这样你的实现类再怎么改变对于整套代码都不会有任何影响。。。。。
这就是桥接模式!
- JAVA设计模式-从抽象与实现说桥接模式
- 菜鸟版JAVA设计模式-从抽象与实现说桥接模式
- Java与设计模式-抽象工厂模式
- Java设计模式--简单工厂模式与抽象工厂模式
- Java 抽象模式设计
- Java设计模式菜鸟系列(五)抽象工厂模式建模与实现
- 《大话设计模式》java实现之抽象工厂模式
- Java与设计模式(03)--抽象工厂模式
- 从设计模式看抽象类与接口的区别
- 从设计模式看抽象类与接口的区别
- 从设计模式看抽象类与接口的区别
- Java设计模式-抽象工厂设计模式
- 设计模式--抽象工厂模式(C++实现)
- 设计模式-抽象工厂模式 C++实现
- java设计模式--抽象工厂
- Java设计模式-抽象工厂
- Java设计模式--抽象工厂
- java设计模式-抽象工厂
- Elasticsearch常见问题收集
- KMP模板
- 【LeetCode】Merge k Sorted Lists
- 一个不错的Git教程
- 配置Andoid开发环境与配置PhoneGap开发环境
- JAVA设计模式-从抽象与实现说桥接模式
- ANT打包报MalformedByteSequenceException: 3 字节的 UTF-8 序列的的原因
- Unix 网络编程 dup和dup2函数
- poj 1988 Cube Stacking 并查集的应用
- poj 1830 开关问题 高斯消元
- CubieTruck安装Cubian X1
- Android 指南针
- Oracle 归档与非归档的切换
- 第12周项目3返回斐波那契数列的第n个数