用Factory Method模式设计一个电视机工厂: 要求为每种品牌的电视机提供一个子工厂,如:海尔工厂专门负责生产海尔电视机,海信工厂专门负责生产海信电视机,如果需要生产TCL电视机或创维电视机,只需要对应增加一个新的TCL工厂或创维工厂即可,原有的工厂无须做任何修改,使得整个系统具有更加的灵活性和可扩展性。
时间: 2024-03-06 19:46:14 浏览: 143
好的,这是一个很经典的工厂方法模式的应用案例。下面是一个基本的设计:
首先,我们需要定义一个电视机工厂接口,用于定义电视机工厂的基本行为:
```java
public interface TVFactory {
public TV produceTV();
}
```
然后,我们需要定义不同品牌的电视机工厂,这些工厂都实现了上述接口,并负责生产对应品牌的电视机:
```java
public class HaierFactory implements TVFactory {
public TV produceTV() {
return new HaierTV();
}
}
public class HisenseFactory implements TVFactory {
public TV produceTV() {
return new HisenseTV();
}
}
public class TCLFactory implements TVFactory {
public TV produceTV() {
return new TCLTV();
}
}
public class SkyworthFactory implements TVFactory {
public TV produceTV() {
return new SkyworthTV();
}
}
```
最后,我们需要定义一个客户端类,用于测试工厂方法模式的实现:
```java
public class Client {
public static void main(String[] args) {
TVFactory haierFactory = new HaierFactory();
TV haierTV = haierFactory.produceTV();
haierTV.play();
TVFactory hisenseFactory = new HisenseFactory();
TV hisenseTV = hisenseFactory.produceTV();
hisenseTV.play();
TVFactory tclFactory = new TCLFactory();
TV tclTV = tclFactory.produceTV();
tclTV.play();
TVFactory skyworthFactory = new SkyworthFactory();
TV skyworthTV = skyworthFactory.produceTV();
skyworthTV.play();
}
}
```
这样,我们就可以根据不同的品牌来创建对应的电视机工厂,并且在使用时只需要调用工厂的 `produceTV()` 方法即可获取对应品牌的电视机实例。如果需要新增品牌,只需要新增一个品牌对应的工厂类即可,无需修改原有代码,实现了系统的灵活性和可扩展性。
阅读全文