Java设计模式:工厂方法的应用实例与理解

原创 心已赠人 2024-11-11 14:57 72阅读 0赞

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(); } }###工厂方法模式的理解- 封装性:工厂方法模式隐藏了对象创建的具体逻辑,客户端不需要知道具体的类是如何被创建和组合的。

  • 扩展性:当需要添加新的报告类型时,只需添加一个新的具体工厂和报告类,而不需要修改现有的代码。
  • 解耦:客户端代码依赖于抽象(接口),而不是具体的实现,这降低了类之间的耦合度。
  • 控制反转:对象的创建被推迟到子类,这是控制反转的一种形式,即创建对象的控制权从客户端代码转移到了工厂类。

工厂方法模式是实现开闭原则(对扩展开放,对修改封闭)的一个好例子,它允许系统在不修改现有代码的情况下进行扩展。

文章版权声明:注明蒲公英云原创文章,转载或复制请以超链接形式并注明出处。

发表评论

表情:
评论列表 (有 0 条评论,72人围观)

还没有评论,来说两句吧...

相关阅读