1.手机操作问题
现在对不同手机类型的不同品牌实现操作编程(比如:开机、关机、上网、打电话等),如图:
2.传统方案解决收集操作问题
传统方法对应的类图
3.桥接模式解决收集操作问题
使用桥接模式改进传统方式,让程序具有更好的扩展性,利用程序维护
package com.young.bridge;
/**
* @author Shaw_Young
* @date 2020/10/12 22:04
*/
public interface Brand {
void open();
void close();
void call();
}
package com.young.bridge;
/**
* @author Shaw_Young
* @date 2020/10/12 22:04
*/
public class XiaoMi implements Brand {
@Override
public void open() {
System.out.println("小米手机开机");
}
@Override
public void close() {
System.out.println("小米手机关机");
}
@Override
public void call() {
System.out.println("小米手机打电话");
}
}
package com.young.bridge;
/**
* @author Shaw_Young
* @date 2020/10/12 22:05
*/
public class Vivo implements Brand {
@Override
public void open() {
System.out.println("Vivo手机开机");
}
@Override
public void close() {
System.out.println("Vivo手机关机");
}
@Override
public void call() {
System.out.println("Vivo手机打电话");
}
}
package com.young.bridge;
/**
* @author Shaw_Young
* @date 2020/10/12 22:06
*/
public abstract class Phone {
/**
* 组合品牌
*/
private Brand brand;
/**
* 构造器
*/
public Phone(Brand brand) {
this.brand = brand;
}
protected void open() {
brand.open();
}
protected void close() {
brand.close();
}
protected void call() {
brand.call();
}
}
package com.young.bridge;
/**
* @author Shaw_Young
* @date 2020/10/12 22:09
*/
public class FoldedPhone extends Phone {
/**
* 构造器
*/
public FoldedPhone(Brand brand) {
super(brand);
}
public void open() {
super.open();
System.out.println("折叠样式手机");
}
public void close() {
super.close();
System.out.println("折叠样式手机");
}
public void call() {
super.call();
System.out.println("折叠样式手机");
}
}
package com.young.bridge;
/**
* @author Shaw_Young
* @date 2020/10/12 22:14
*/
public class Client {
public static void main(String[] args) {
Brand xiaoMi = new XiaoMi();
Phone phone = new FoldedPhone(xiaoMi);
phone.open();
phone.call();
phone.close();
}
}











网友评论