一、前言:
桥接模式的注意事项和细节:
- 实现了抽象与实现的分离,从而极大的提供了系统的灵活性。
- 有利于分层设计,从而产生更好的结构化系统。
二、桥接模式:
2.1、UML图:
2.2、代码实现:
Step 1) 创建 Brand 接口、及其 Vivo、XiaoMi 实现类:
public interface Brand {
void open();
void close();
void cell();
}
class Vivo implements Brand{
@Override
public void open() {
System.out.println("Vivo 手机开机!");
}
@Override
public void close() {
System.out.println("Vivo 手机关机! ");
}
@Override
public void cell() {
System.out.println("Vivo 手机打电话!");
}
}
class XiaoMi implements Brand{
@Override
public void open() {
System.out.println("小米手机开机!");
}
@Override
public void close() {
System.out.println("小米手机关机! ");
}
@Override
public void cell() {
System.out.println("小米手机打电话!");
}
}
Step 2) 创建 Phone 抽象类、及其 FoldedPhone、UprightPhone 实现类:
public abstract class Phone {
private Brand brand;
public Phone(Brand brand) {
this.brand = brand;
}
protected void open(){
this.brand.open();
}
protected void close(){
this.brand.close();
}
protected void cell(){
this.brand.cell();
}
}
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 cell(){
super.cell();
System.out.println("折叠手机打电话!");
}
}
class UprightPhone extends Phone{
public UprightPhone(Brand brand) {
super(brand);
}
public void open(){
super.open();
System.out.println("直立手机打开!");
}
public void close(){
super.close();
System.out.println("直立手关闭!");
}
public void cell(){
super.cell();
System.out.println("直立手机打电话!");
}
}
Step 3) 创建 main 方法:
public class Client {
public static void main(String[] args) {
Phone phone1 = new FoldedPhone(new XiaoMi());
phone1.open();
phone1.close();
phone1.cell();
System.out.println("============================");
Phone phone2 = new FoldedPhone(new Vivo());
phone2.open();
phone2.close();
phone2.cell();
System.out.println("============================");
Phone phone3 = new UprightPhone(new Vivo());
phone3.open();
phone3.close();
phone3.cell();
System.out.println("============================");
Phone phone4 = new UprightPhone(new Vivo());
phone4.open();
phone4.close();
phone4.cell();
System.out.println("============================");
}
}
• 由 ChiKong_Tam 写于 2020 年 10 月 18 日