Java设计模式:工厂方法的应用实例与理解
Java设计模式是一套被广泛认可的最佳实践,用于解决特定类型的软件设计问题。工厂方法模式(Factory Method Pattern)是创建型模式之一,它定义了一个创建对象的接口,但让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。
工厂方法模式的应用实例假设我们有一个简单的场景,需要创建不同类型的报告。每种报告的创建过程可能不同,但我们希望有一个统一的接口来创建它们。
1.定义报告接口(Report):
javapublic interface Report {
void generate();
}
2. 实现具体的报告类:
```javapublic class HtmlReport implements Report {
@Override public void generate() {
System.out.println(“Generating HTML report.”);
}
}
public class PdfReport implements Report {
@Override public void generate() {
System.out.println(“Generating PDF report.”);
}
}
```3.定义报告工厂接口(ReportFactory):
javapublic interface ReportFactory {
Report createReport();
}
4. 实现具体的工厂类:
```javapublic class HtmlReportFactory implements ReportFactory {
@Override public Report createReport() {
return new HtmlReport();
}
}
public class PdfReportFactory implements ReportFactory {
@Override public Report createReport() {
return new PdfReport();
}
}
```5. 使用工厂方法:
javapublic class ReportGenerator {
public static void main(String[] args) {
ReportFactory factory;//根据需要生成不同类型的报告 factory = new HtmlReportFactory();
Report report = factory.createReport();
report.generate();
factory = new PdfReportFactory();
report = factory.createReport();
report.generate();
}
}
###工厂方法模式的理解- 封装性:工厂方法模式隐藏了对象创建的具体逻辑,客户端不需要知道具体的类是如何被创建和组合的。
- 扩展性:当需要添加新的报告类型时,只需添加一个新的具体工厂和报告类,而不需要修改现有的代码。
- 解耦:客户端代码依赖于抽象(接口),而不是具体的实现,这降低了类之间的耦合度。
- 控制反转:对象的创建被推迟到子类,这是控制反转的一种形式,即创建对象的控制权从客户端代码转移到了工厂类。
工厂方法模式是实现开闭原则(对扩展开放,对修改封闭)的一个好例子,它允许系统在不修改现有代码的情况下进行扩展。
还没有评论,来说两句吧...