设计模式--桥接模式
2023-09-14 09:00:31 时间
BRIDGE?早上碰到MM,要说早上好,晚上碰到MM,要说晚上好;碰到MM穿了件新衣服,要说你的衣服好漂亮哦,碰到MM新做的发型,要说你的头发好漂亮哦。不要问我“早上碰到MM新做了个发型怎么说”这种问题,自己用BRIDGE组合一下不就行了 桥梁模式:将抽象化与实现化脱耦,使得二者可以独立的变化,也就是说将他们之间的强关联变成弱关联,也就是指在一个软件系统的抽象化和实现化之间使用组合/聚合关系而不是继承关系,从而使两者可以独立的变化。
也就是说:将抽象和行为划分开来,各自独立,但能动态的结合.
接下来以杯子和液体来举例:
杯子有大杯子,也有小杯子;
液体这里以牛奶和水举例:
牛奶既可以放入大杯子,也可放入小杯子,水也一样。
首先定义液体类:
public abstract class Liquid { void fillwith(){}; }
然后定义杯子类:
public abstract class Tazas { Liquid liquid; void fillWidth(){ } }
大杯子类:
public class BigTazas extends Tazas{ @Override void fillWidth() { super.fillWidth(); liquid.fillwith(); System.out.println("大杯子"); } }
小杯子类:
public class SmallTazas extends Tazas{ @Override void fillWidth() { super.fillWidth(); liquid.fillwith(); System.out.println("小杯子"); } }
牛奶类:
public class Milk extends Liquid { @Override void fillwith() { // TODO Auto-generated method stub super.fillwith(); System.out.println("牛奶放入"); } }
水类:
public class Water extends Liquid { @Override void fillwith() { // TODO Auto-generated method stub super.fillwith(); System.out.println("水放入"); } }
测试的类:
public class Main { public static void main(String[] args) { Tazas tazas = new BigTazas(); tazas.liquid = new Water(); tazas.fillWidth(); System.out.println("------------"); Tazas tazas1 = new SmallTazas(); tazas1.liquid = new Milk(); tazas1.fillWidth(); System.out.println("------------"); Tazas tazas2 = new SmallTazas(); tazas2.liquid = new Water(); tazas2.fillWidth(); System.out.println("------------"); Tazas tazas3 = new BigTazas(); tazas3.liquid = new Milk(); tazas3.fillWidth(); } }
运行结果:
水放入
大杯子
------------
牛奶放入
小杯子
------------
水放入
小杯子
------------
牛奶放入大杯子
相关文章
- 23种设计模式之访问者模式(Visitor Pattern)
- Java 设计模式最佳实践:三、行为模式
- 【说站】js中介者模式是什么意思?
- Java设计模式——策略模式[通俗易懂]
- 「设计模式 JavaScript 描述」命令模式
- rsync服务的三种模式测试[通俗易懂]
- 一起学习设计模式--03.工厂方法模式
- 一起学习设计模式--09.组合模式
- 设计模式-命令模式
- Java设计模式之享元模式
- 设计模式 | 创建型 | 工厂模式
- 【C++】适配器模式 -- stack/queue/dqueue
- Java设计模式之命令模式
- java设计模式之单例模式详解架构师
- java设计模式之建造者模式详解架构师
- 设计模式之享元模式(结构型)详解架构师
- 设计模式:抽象工厂模式详解架构师
- Oracle游标IN模式使用指南(oracle游标in)
- php设计模式Builder(建造者模式)
- 基于Android设计模式之--SDK源码之策略模式的详解
- MongoDB学习笔记(三)在MVC模式下通过Jqgrid表格操作MongoDB数据
- Java设计模式之适配器模式简介