public class BeautifulAppearance implements IAppearance {
@Override
public String appearance() {
return "外形美观";
}
}
public class MediumPrice implements IPrice {
@Override
public String price() {
return "价格中等";
}
}
public class TouchScreen implements IScreen {
@Override
public String screen() {
return "不可触屏";
}
}
public class QuickSpeed implements ISpeed {
@Override
public String speed() {
return "运行速度快";
}
}
public class Phone {
private String name;
private IAppearance appearance;
private IPrice price;
private ISpeed speed;
private IScreen screen;
public Phone() {
this("无名");
}
public Phone(String name) {
this.name = name;
}
public void setName(String name) {
this.name = name;
}
public void setAppearance(IAppearance appearance) {
this.appearance = appearance;
}
public void setPrice(IPrice price) {
this.price = price;
}
public void setSpeed(ISpeed speed) {
this.speed = speed;
}
public void setScreen(IScreen screen) {
this.screen = screen;
}
@Override
public String toString() {
return this.name + "是一款" + this.appearance.appearance() + ","
+ this.price.price() + "," + this.speed.speed() + "," + this.screen.screen() + "的手机";
}
}
public interface IAppearance {
String appearance();
}
public interface IPrice {
String price();
}
public interface IScreen {
String screen();
}
public interface ISpeed {
String speed();
}
public class Test {
public static void main(String[] args) {
Phone huaWei = new Phone("华为");
huaWei.setAppearance(new BeautifulAppearance());
huaWei.setPrice(new MediumPrice());
huaWei.setSpeed(new QuickSpeed());
huaWei.setScreen(new IScreen() {
@Override
public String screen() {
return "可触屏";
}
});
System.out.println(huaWei);
Phone NOKIA = new Phone();
NOKIA.setName("诺基亚");
NOKIA.setAppearance(new IAppearance() {
@Override
public String appearance() {
return "外壳坚硬";
}
});
NOKIA.setPrice(new IPrice() {
@Override
public String price() {
return "价格低廉";
}
});
NOKIA.setSpeed(new ISpeed() {
@Override
public String speed() {
return "速度飞快";
}
});
NOKIA.setScreen(new TouchScreen());
System.out.println(NOKIA);
}
}