一、 定义
桥接模式(Bridge),将抽象部分与它的实现分离,使它们都可以独立地变化。可以理解为实现系统可能有多角度分类,每一种分类都有可能变化,那么就把这种多角度分离出来让它们独立变化,以减少它们之间的耦合。
二、 结构图

三、 示例模式(以手机的品牌和软件为例)
package org.example.bridgemodel;
//手机软件
public interface MobileSoft {
public void Opration();
}
package org.example.bridgemodel;
//手机品牌
public interface MobileType {
public void setTypesoft(MobileSoft mobileSoft);
public void showTypesoft();
}
package org.example.bridgemodel;
public class GameApp implements MobileSoft {
@Override
public void Opration() {
System.out.println("Gameapp opration");
}
}
package org.example.bridgemodel;
public class PictureApp implements MobileSoft {
@Override
public void Opration() {
System.out.println("pictureapp opration");
}
}
package org.example.bridgemodel;
import java.util.ArrayList;
import java.util.List;
public class HMobile implements MobileType {
private List<MobileSoft> lm = new ArrayList<>();
@Override
public void setTypesoft(MobileSoft mobileSoft) {
lm.add(mobileSoft);
}
@Override
public void showTypesoft() {
System.out.println("H mobile:");
for (MobileSoft ms:lm) {
ms.Opration();
}
}
}
package org.example.bridgemodel;
import java.util.ArrayList;
import java.util.List;
public class MMobile implements MobileType {
private List<MobileSoft> lm = new ArrayList<>();
@Override
public void setTypesoft(MobileSoft mobileSoft) {
lm.add(mobileSoft);
}
@Override
public void showTypesoft() {
System.out.println("M mobile:");
for (MobileSoft ms:lm) {
ms.Opration();
}
}
}
package org.example.bridgemodel;
public class BridgeModelTest {
public static void main(String[] args) {
HMobile hm = new HMobile();
MobileSoft ga = new GameApp();
hm.setTypesoft(ga);
MMobile mm = new MMobile();
MobileSoft pa = new PictureApp();
mm.setTypesoft(pa);
hm.showTypesoft();
mm.showTypesoft();
}
}
653

被折叠的 条评论
为什么被折叠?



