classMouse{public voidsayHi(){};
}class DellMouse extendsMouse {
@Overridepublic voidsayHi() {
System.out.println("产品:戴尔鼠标");
}
}class HpMouse extendsMouse {
@Overridepublic voidsayHi() {
System.out.println("产品:惠普鼠标");
}
}classKeyBoard {public voidkick(){};
}class HpKeyBoard extendsKeyBoard {
@Overridepublic voidkick() {
System.out.println("产品:惠普键盘");
}
}class DellKeyBoard extendsKeyBoard {
@Overridepublic voidkick() {
System.out.println("产品:戴尔键盘");
}
}//总的工厂接口
interfacePcFactory {publicMouse createMouse() ;publicKeyBoard createKeyBoard() ;
}class HpFactory implementsPcFactory {
@OverridepublicMouse createMouse() {return newHpMouse();
}
@OverridepublicKeyBoard createKeyBoard() {return newHpKeyBoard();
}
}class DellFactory implementsPcFactory {
@OverridepublicMouse createMouse() {return newDellMouse();
}
@OverridepublicKeyBoard createKeyBoard() {return newDellKeyBoard();
}
}//当需要增加一个华硕工厂时:
class AsusMouse extendsMouse {
@Overridepublic voidsayHi() {
System.out.println("产品:华硕鼠标");
}
}class AsusKeyBoard extendsKeyBoard {
@Overridepublic voidkick() {
System.out.println("产品:华硕键盘");
}
}class AsusFactory implementsPcFactory {
@OverridepublicMouse createMouse() {return newAsusMouse();
}
@OverridepublicKeyBoard createKeyBoard() {return newAsusKeyBoard();
}
}public classNormFactory {public static voidmain(String[] args) {
PcFactory hpFact= newHpFactory();
Mouse hpm=hpFact.createMouse();
KeyBoard hpkbd=hpFact.createKeyBoard();
PcFactory dellFact= newDellFactory();
Mouse dellm=dellFact.createMouse();
KeyBoard dellkbd=dellFact.createKeyBoard();
hpm.sayHi();
dellm.sayHi();
hpkbd.kick();
dellkbd.kick();
}
}