介绍
通俗点理解就是将一个类拆分得更细,并使用聚合来代替继承来关系它们的关系
举个栗子:
建设人是一个抽象
[桥接模式之前]
1. 可以分男人和女人
2. 可以细分为穿T恤的男人、穿马甲的女人或是穿穿马甲的男人、穿T恤的女人等
[桥接模式之后]
1. 可以分男人和女人
2. 可以将T恤和马甲另外归为一类实现,如先归为衣服
3. 将衣服聚合到人(男人/女人)当中
定义
将抽象部分与它的实现部分分离,使它们都可以独立地变化
唠叨
长篇大论的文章让人看不下去,故弄玄虚的我不想看,个人喜欢简约简洁的文章
从学习编程至今也看过不少技术文章,感想是很多写技术文章的人不知道是故意还是无意,总是喜欢把一个简单的东西说得貌似很复杂
对此非常厌恶,觉得如果真是有心分享的话,应该是用最简练最通俗的话语来去讲解对技术的理解和使用,而不是炫耀式地表达
当然这完全是我自己个人观点
入门案例:
UML图解:
代码:
Person:
public abstract class Person {
private Clothing clothing; //分离的分类
private String personType;
//衣着
public void dress() {
Clothing clothing = getClothing();
if(clothing != null){
clothing.personDressCloth(this);
}
}
//setter和getter
public Clothing getClothing() {
return clothing;
}
public void setClothing(Clothing clothing) {
this.clothing = clothing;
}
public String getPersonType() {
return personType;
}
public void setPersonType(String personType) {
this.personType = personType;
}
}
Man:
public class Man extends Person {
public Man() {
setPersonType("男人");
}
}
Lady:
public class Lady extends Person {
public Lady() {
setPersonType("女人");
}
}
Clothing:
public interface Clothing {
void personDressCloth(Person person);
}
T:
public class T implements Clothing {
@Override
public void personDressCloth(Person person) {
System.out.println(person.getPersonType() + "穿T恤");
}
}
Jacket:
public class Jacket implements Clothing {
@Override
public void personDressCloth(Person person) {
System.out.println(person.getPersonType() + "穿马甲");
}
}
测试:
public class Main {
public static void main(String[] args){
/*
Person man = new Man();
Person lady = new Lady();
Clothing jacket = new Jacket();
jacket.personDressCloth( man );
Clothing t = new T();
t.personDressCloth( lady );
*/
//或以下写法==================================================
Person man = new Man();
man.setClothing( new T() );
man.dress();
Person lady = new Lady();
lady.setClothing( new Jacket() );
lady.dress();
/**
* output:
* 男人穿T恤
女人穿马甲
*/
}
}
参考 疯狂java联盟
推荐文章
java设计模式-桥梁模式(桥接模式 Bridge) https://www.jianshu.com/p/775cb53a4da2