请用java代码实现一个工厂方法模式并详细说明其优缺点及应用场景
时间: 2024-03-11 18:47:04 浏览: 135
工厂方法模式的Java实现
工厂方法模式(Factory Method)是一种创建型设计模式,它提供了一种将对象的创建委托给子类的方式。在工厂方法模式中,父类负责定义创建对象的接口,而子类则负责实现这个接口并创建对象。
以下是一个简单的工厂方法模式的实现示例:
```java
// 抽象产品
interface Product {
void doSomething();
}
// 具体产品1
class ConcreteProduct1 implements Product {
@Override
public void doSomething() {
System.out.println("ConcreteProduct1 do something");
}
}
// 具体产品2
class ConcreteProduct2 implements Product {
@Override
public void doSomething() {
System.out.println("ConcreteProduct2 do something");
}
}
// 抽象工厂
interface Factory {
Product createProduct();
}
// 具体工厂1
class ConcreteFactory1 implements Factory {
@Override
public Product createProduct() {
return new ConcreteProduct1();
}
}
// 具体工厂2
class ConcreteFactory2 implements Factory {
@Override
public Product createProduct() {
return new ConcreteProduct2();
}
}
```
使用工厂方法模式的优点包括:
1. 降低代码耦合度:工厂方法模式将对象的创建和使用分离开来,降低了对象之间的耦合度。
2. 更好的扩展性:添加新的产品时,只需要添加一个对应的具体产品类和具体工厂类即可,不需要修改已有的代码。
3. 符合单一职责原则:每个具体工厂类只负责创建一种产品,符合单一职责原则。
工厂方法模式的缺点包括:
1. 增加了类的个数:工厂方法模式需要创建大量的工厂类和产品类,增加了类的个数。
2. 增加了系统的复杂度:工厂方法模式将对象的创建和使用分离开来,增加了系统的复杂度。
工厂方法模式的应用场景包括:
1. 当一个类不知道它所必须创建的对象的类时,可以使用工厂方法模式。
2. 当一个类希望由它的子类来指定所创建的对象时,可以使用工厂方法模式。
3. 当需要将对象的创建和使用分离开来以便分别独立地变化时,可以使用工厂方法模式。
4. 当需要提供一个全局的访问点来创建某种类型的对象时,可以使用工厂方法模式。
阅读全文