桥接模式
package ink.yql.bridging;
public interface Brand {
String getName();
}
package ink.yql.bridging;
public abstract class Goods {
/**
一个产品一定有一个品牌
*/
Brand brand;
abstract String getDescription();
}
package ink.yql.bridging;
public class Computer extends Goods {
@Override
String getDescription() {
return super.brand.getName() + "品牌:的产品 : " + "电脑";
}
public Computer(Brand brand) {
super.brand = brand;
}
}
package ink.yql.bridging;
public class Huawei implements Brand{
@Override
public String getName() {
return "华为";
}
}
package ink.yql.bridging;
public class Phone extends Goods{
@Override
String getDescription() {
return super.brand.getName()+"品牌:的产品 : " + "手机";
}
/**
* 通过构造方法,在创建手机的时候告诉手机是什么品牌的
* @param brand 当前手机的品牌
*/
public Phone(Brand brand){
super.brand = brand;
}
}
package ink.yql.bridging;
public class Xiaomi implements Brand{
@Override
public String getName() {
return "小米";
}
}
测试
package ink.yql.bridging;
public class Test01 {
public static void main(String[] args) {
Goods phone = new Phone(new Xiaomi());
System.out.println(phone.getDescription());
phone = new Phone(new Huawei());
System.out.println(phone.getDescription());
Goods computer = new Computer(new Huawei());
System.out.println(computer.getDescription());
}
}