XX品牌的XX产品
将两个维度进行组合既是搭一座桥进行连接的意思
定义抽象产品
/**
* 抽象产品, 可拓展多种产品
* 组合品牌
*/
abstract class Product{
// 重点组合品牌对象
Brand brand;
public Product(Brand brand) {
this.brand = brand;
}
abstract void showInfo();
}
定义品牌接口
/**
* 品牌接口, 可供拓展多种品牌
*/
interface Brand{
String showBrand();
}
产品继承类
/**
* 汽车, 继承产品抽象类
*/
class Car extends Product{
public Car(Brand brand) {
super(brand);
}
@Override
void showInfo() {
System.out.printf("%s <- 品牌生产的汽车 %n",brand.showBrand());
}
}
/**
* 手机, 继承产品抽象类
*/
class Phone extends Product{
public Phone(Brand brand) {
super(brand);
}
@Override
void showInfo() {
System.out.printf("%s <- 品牌生产的手机 %n",brand.showBrand());
}
}
品牌实现类
/**
* 拓展品牌 小米
*/
class Xiaomi implements Brand{
@Override
public String showBrand() {
return "小米";
}
}
/**
* 拓展品牌 华为
*/
class Huawei implements Brand{
@Override
public String showBrand() {
return "华为";
}
}
测试
@Test
public void Client() {
Car huaweiCar = new Car(new Huawei());
huaweiCar.showInfo(); // 华为 <- 品牌生产的汽车
Car miCar = new Car(new Xiaomi());
miCar.showInfo(); // 小米 <- 品牌生产的汽车
Phone phone = new Phone(new Xiaomi());
phone.showInfo(); // 小米 <- 品牌生产的手机
}