目录
1.桥接模式
2.优缺点
3.关键角色
4.使用场景
5.实例解析
我们需要构建一个手机类,我们知道手机有很多品牌,苹果、华为等,从另外一个颜色维度,又有多种颜色,红、黄、蓝等~
- 1.创建抽象类-手机
使用abstract创建抽象类
/**
* 抽象类
*/
public abstract class Phone {
/**
* 通过组合的方式,来桥接其他行为
*/
protected Color color;
/**
* 手机的方法
*/
abstract public void run();
public void setColor(Color color) {
this.color = color;
}
}
- 2.创建颜色接口
/**
* 抽象接口
*/
public interface Color {
void userColor();
}
- 3.实现颜色接口的具体实现类
/**
* 扩展抽象-具体的抽象实现类
*/
public class BlueColor implements Color{
@Override
public void userColor() {
System.out.println("蓝色~");
}
}
/**
* 扩展抽象-具体的抽象实现类
*/
public class RedColor implements Color {
@Override
public void userColor() {
System.out.println("红色~");
}
}
/**
* 扩展抽象-具体的抽象实现类
*/
public class YellowColor implements Color {
@Override
public void userColor() {
System.out.println("黄色~");
}
}
- 4.创建继承抽象类的具体类
通过构造器的方式,实现组合
/**
* 具体的实现类
*/
public class ApplePhone extends Phone {
/**
* 组合颜色
* @param color
*/
public ApplePhone(Color color) {
super.setColor(color);
}
@Override
public void run() {
color.userColor();
System.out.println("苹果手机");
}
}
/**
* 具体的实现类
*/
public class HWPhone extends Phone {
/**
* 组合颜色
*
* @param color
*/
public HWPhone(Color color) {
super.setColor(color);
}
@Override
public void run() {
color.userColor();
System.out.println("华为");
}
}
- 5.测试
public class Main {
public static void main(String[] args) {
HWPhone hwPhone = new HWPhone(new BlueColor());
hwPhone.run();
System.out.println("===============================");
ApplePhone applePhone = new ApplePhone(new RedColor());
applePhone.run();
}
}