java工厂模式

工厂模式

  实现创建者和调用者的分离

简单工厂,工厂方法,抽象工厂模式。

面向对象的设计原则:OCP(开闭原则):软件的设计应该对扩展开放,对修改关闭

          DIP(依赖倒转原则):应该针对接口编程,不应该针对实现编程。

简单工厂:

例:

//顶级接口

public interface Car extends Runnable{

}

//子接口

public class Audi implements Car{
  @Override
  public void run() {
    System.out.println("奥迪再跑");
  }
}

//子接口

public class Byd implements Car{
  @Override
  public void run() {
    System.out.println("比亚迪再跑");
  }
}

通过给不同的工厂传不同类型的参数,返回不同的对象

public class CarFactory {

  public Car getInstance(String type) {
    if("奥迪".equals(type)) {
      return new Audi();
    }else if("比亚迪".equals(type)) {
      return new Byd();
    }else {
      return null;
    }

  }

}

简单工厂也称之为静态工厂,因为只能生成已知的对象;同时,简单工厂违反了开闭原则。

 

工厂方法模式

声明一个车辆工厂的接口

public interface CarFactory {

  public Car getInstance();

}

让产生不同的车辆的工厂实现抽象车辆工厂

生产奥迪的工厂

public class AudiFactory implements CarFactory{
@Override
  public Car getInstance() {
    return new Audi();
  }
}

奥迪类

public class Audi implements Car{
  @Override
  public void run() {
    System.out.println("奥迪再跑");
  }
}

当需要生产奥迪车的时候创建一个奥迪车的工厂对象

工厂方法与静态工厂相比较而言,不用违反开闭原则,在原有基础上,增加实现类即可实现对应的功能。

简单工厂和工厂方法比较

  简单工厂相对简单,代码复杂度相对简单。但是设计上工厂方法更加满足要求,但实际开发中简单工厂比工厂方法更加实用。

 

抽象工厂

1.抽象产品接口:定义产品的接口,公共的暴露方法。便于实际的产品类实现。

2.具体的产品类:包含实际产品的类的逻辑处理:

3.抽象工厂接口:定义产生系列对象的接口

4.具体的工厂实现:实现抽象的接口工厂,返回具体的产品类的实现。

代码略;

抽象工厂还是针对某一个产品族进行设计的。

 

posted @   zzzzzl  阅读(284)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
点击右上角即可分享
微信分享提示