public class Client {
public static void main(String[] args){
try {
TV tv = HairFactory.produceTV();
tv.play();
AirConditioner airConditioner = HairFactory.produceAirConditioner();
airConditioner.changeTemperature();
} catch(Exception e) {
System.out.println(e.getMessage());
}
}
}
public interface EFactory {
static TV produceTV() {
return null;
}
static AirConditioner produceAirConditioner() {
return null;
}
}
public interface TV {
public void play();
}
public interface AirConditioner {
public void changeTemperature();
}
public class HairFactory {
public static TV produceTV(){
return new HairTV();
}
public static AirConditioner produceAirConditioner(){
return new HairAirConditioner();
}
}
public class TCLFactory {
public TV produceTV(){
return new TCLTV();
}
public AirConditioner produceAirConditioner(){
return new TCLConditioner();
}
}
public class HairTV implements TV{
@Override
public void play() {
System.out.println("海爾電視播放。。。。");
}
}
public class TCLTV implements TV {
@Override
public void play() {
System.out.println("TCL電視正在播放。。。。");
}
}
public class HairAirConditioner implements AirConditioner {
@Override
public void changeTemperature() {
System.out.println("海爾空調正在調整溫度。。。");
}
}
public class TCLConditioner implements AirConditioner {
@Override
public void changeTemperature() {
System.out.println("TCL空調正在調整溫度。。。。");
}
}
Tips: 和工廠方法相比,感覺抽象工廠模式是工廠方法的上一級,應用於比較大規模的項目中。