interface Appliance {
public function powerOn();
public function powerOff();
public function bake();
public function mix();
public function wash();
}
class Oven implements Appliance {
public function powerOn() { /* Implement ... */ }
public function powerOff() { /* Implement ... */ }
public function bake() { /* Implement... */ }
public function mix() { /* Nothing to implement ... */ }
public function wash() { /* Cannot implement... */ }
}
class Mixer implements Appliance {
public function powerOn() { /* Implement... */ }
public function powerOff() { /* Implement... */ }
public function bake() { /* Cannot implement... */ }
public function mix() { /* Implement... */ }
public function wash() { /* Cannot implement... */ }
}
class WashingMachine implements Appliance {
public function powerOn() { /* Implement... */ }
public function powerOff() { /* Implement... */ }
public function bake() { /* Cannot implement... */ }
public function mix() { /* Cannot implement... */ }
public function wash() { /* Implement... */ }
}
在这里,我们有一个接口为几个设备相关的方法设置需求。然后我们有几个类实现这个接口。问题很明显,不是所有的家电都能挤进同一个接口。对于一台洗衣机来说,强迫它实现烘烤和混合方法是没有意义的。这些方法需要各自拆分到自己的接口中。这样具体的家电类就只能实现真正有意义的方法。