共计 1795 个字符,预计需要花费 5 分钟才能阅读完成。
定义
将形象和实现解耦,使得两者能够独立地变动
实用状况
- 你不心愿在形象和实现局部之间有一个固定的绑定关系。比方:你想在程序运行时能够切换实现局部;
- 类的形象以及它的实现都应该能够通过生成子类的形式实现。此时,桥接模式能够让你对不同的形象接口和实现局部进行组合并别离对他们进行裁减;
- 对一个形象的实现局部的批改不应答客户产生影响。
构造
通过构造咱们能够分明地看到抽象类 Abstraction 就像是一个桥梁一样将 RefinedAbstraction 和 Implementor 连接起来。
代码示例
工厂生产产品模仿
模仿工厂生产销售产品
文件目录
bridge/
|-- Client.java // 测试代码
|-- factory
| |-- CanFactory.java // 罐头工厂
| `-- ModernFactory.java // 现代化工厂
|-- Factory.java // 工厂的抽象类
|-- product
| |-- Can.java // 产品具体类 罐头
| `-- Toy.java // 产品具体类 玩具
`-- Product.java // 产品的抽象类
产品类相干代码
public abstract class Product {protected void made() {System.out.println(getClass().getSimpleName() + "has been made");
}
protected void sold() {System.out.println(getClass().getSimpleName() + "has been sold");
}
}
public class Can extends Product {
@Override
public void made() {super.made();
}
@Override
public void sold() {super.sold();
}
}
public class Toy extends Product {
@Override
public void made() {super.made();
}
@Override
public void sold() {super.sold();
}
}
工厂相干代码
public abstract class Factory {
private Product product; // 援用形象的产品类
public Factory(Product p) {this.product = p;}
public void makeMoney() {product.made();
product.sold();}
}
public class CanFactory extends Factory {
// 只承受 Can 类
public CanFactory(Can p) {super(p);
}
@Override
public void makeMoney() {super.makeMoney();
System.out.println(getClass().getSimpleName() + "make money!");
}
}
public class ModernFactory extends Factory {
// 只有是 Product 即可生产
public ModernFactory(Product p) {super(p);
}
@Override
public void makeMoney() {super.makeMoney();
System.out.println("ModernFactory make money!");
}
}
罐头工厂 CanFactory
只能生产罐头 Can
。而古代工厂ModernFactory
能够生产 Product
,罐头或者玩具Toy
都能够。
测试与输入
Can can = new Can();
CanFactory canFactory = new CanFactory(can);
canFactory.makeMoney();
ModernFactory modernFactory = new ModernFactory(new Toy());
modernFactory.makeMoney();
/*
Can has been made
Can has been sold
CanFactory make money!
Toy has been made
Toy has been sold
ModernFactory make money!
*/
【Android 零根底入门教程视频】
【Android 框架源码解析视频】
【Android 大厂面试题精讲视频】
正文完