桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。
1.实现,每个手机品牌,都可以其方法
图示
phone类,,并调用Brand里的方法
package qiaojie;
public class phone {
private Brand brand;
public phone(Brand brand) {
super();
this.brand = brand;
}
protected void open() {
this.brand.open();
}
protected void close() {
brand.close();
}
protected void call() {
brand.call();
}
}
Brand类,定义一些接口
package qiaojie;
public interface Brand {
void open();
void close();
void call();
}
继承一些方法,可以传进去值
package qiaojie;
public class FoledPhoen extends phone{
public FoledPhoen(Brand brand) {
super(brand);
}
public void open() {
super.open();
System.out.println("折叠式手机");
}
public void close() {
super.open();
System.out.println("折叠式手机");
}
public void call() {
super.open();
System.out.println("折叠式手机");
}
}
定义另外一个继承类,实现方法
package qiaojie;
public class UpRightPhone extends phone{
public UpRightPhone(Brand brand) {
super(brand);
}
public void open() {
super.open();
System.out.println("直立式手机");
}
public void close() {
super.open();
System.out.println("直立式手机");
}
public void call() {
super.open();
System.out.println("直立式手机");
}
}
定义品牌,继承phone类
package qiaojie;
public class vivo implements Brand{
@Override
public void open() {
// TODO Auto-generated method stub
System.out.println("vivo手机开机");
}
@Override
public void close() {
// TODO Auto-generated method stub
System.out.println("vivo手机关机");
}
@Override
public void call() {
// TODO Auto-generated method stub
System.out.println("vivo手机打电话");
}
}
定义另一品牌的类
package qiaojie;
public class xiaomi implements Brand{
@Override
public void open() {
// TODO Auto-generated method stub
System.out.println("小米手机开机");
}
@Override
public void close() {
// TODO Auto-generated method stub
System.out.println("小米手机关机");
}
@Override
public void call() {
// TODO Auto-generated method stub
System.out.println("小米手机打电话");
}
}
client,测试类,实现他的功能
package qiaojie;
public class client {
public static void main(String[] args) {
phone phone1=new FoledPhoen(new xiaomi());
phone1.open();
phone1.close();
phone1.call();
phone phone2=new FoledPhoen(new xiaomi());
phone2.open();
phone2.close();
phone2.call();
UpRightPhone phone3=new UpRightPhone(new xiaomi());
phone3.open();
phone3.close();
phone3.call();
}
}