现在对不同手机类型的不同品牌实现操作编程(比如:开机、关机、上网,打电话等),如图:
使用桥接模式改进传统方式,让程序具有搞好的扩展性,利用程序维护
package com.flower.qiaojie;
public class TestMain {
public static void main(String[] args) {
Phone phone = new FoldedPhone(new Xiaomi());
phone.open();
phone.call();
phone.close();
}
}
interface Brand{
void open();
void call();
void close();
}
class Xiaomi implements Brand{
@Override
public void open() {
System.out.println("小米手机open...");
}
@Override
public void call() {
System.out.println("小米手机call...");
}
@Override
public void close() {
System.out.println("小米手机close...");
}
}
class Vivo implements Brand{
@Override
public void open() {
System.out.println("Vivo手机open...");
}
@Override
public void call() {
System.out.println("Vivo手机call...");
}
@Override
public void close() {
System.out.println("Vivo手机close...");
}
}
abstract class Phone{
protected Brand brand;
public Phone(Brand brand) {
this.brand = brand;
}
protected void open(){
brand.open();
}
protected void close(){
brand.close();
}
protected void call(){
brand.call();
}
}
class FoldedPhone extends Phone{
public FoldedPhone(Brand brand) {
super(brand);
}
@Override
protected void open() {
System.out.println("折叠式手机开启");
super.open();
}
@Override
protected void close() {
System.out.println("折叠式手机关闭");
super.close();
}
@Override
protected void call() {
System.out.println("折叠式手机打电话");
super.call();
}
}
桥接模式在JDBC的源码剖析
代码分析+Debug
类图
对于那些不希望使用继承或因为多层次继承导致系统类的个数急剧增加的系统,桥接模式尤为适用.