首页 > 其他分享 >简单工厂模式

简单工厂模式

时间:2024-09-17 15:04:55浏览次数:1  
标签:carType ICar 模式 工厂 getCar 简单 null public

简单工厂模式

简单工厂模式(Simple Factory Pattern)是一种创建型设计模式,通过一个工厂类来决定实例化哪一个类的对象。它是最常见的设计模式之一,主要用于将对象的创建与使用分离,减少代码重复,提高代码的可维护性。

特点

  1. 工厂角色:负责创建具体产品类的实例,通常是一个包含静态方法的类。
  2. 具体产品角色:由工厂创建的对象,通常是实现相同接口或继承自相同父类的具体类。
  3. 客户端角色:使用工厂来获取对象,而不是直接实例化具体类。

实现方式

简单工厂模式通过一个工厂类提供静态方法,根据传入的参数创建并返回对应的产品对象。客户端只需要知道产品的类型,而不需要关心具体产品类的实现细节。

例如:

public class CarFactory {
    public static ICar getCar(String carType) {
        if (carType == null) {
            return null;
        }
        if (carType.equalsIgnoreCase("SPORT")) {
            return new SportCar();
        } else if (carType.equalsIgnoreCase("JEEP")) {
            return new JeepCar();
        } else if (carType.equalsIgnoreCase("HATCHBACK")) {
            return new HatchbackCar();
        }
        return null;
    }
}

public class HatchbackCar implements ICar {
    @Override
    public void getCar() {
        System.out.println("恭喜你,获得Hatchback车一辆");
    }
}
public class JeepCar implements ICar {

    @Override
    public void getCar() {
        System.out.println("恭喜你,获得越野车一辆");
    }
}
public class SportCar implements ICar {
    @Override
    public void getCar() {
        System.out.println("恭喜你,获得跑车一辆");
    }
}
//test
  public static void main(String[] args) {
		//简单工厂方法模式
        ICar sport= CarFactory.getCar("SPORT");
        if (sport!=null){
            sport.getCar();
        }
        ICar jeepCar=CarFactory.getCar("JeepCar");
        if (jeepCar!=null){
            jeepCar.getCar();
        }
        ICar hatchbackCar=CarFactory.getCar("HatchbackCar");
        if (hatchbackCar!=null){
            hatchbackCar.getCar();
        }
  }

在这个例子中,CarFactory 是工厂类,负责根据传入的字符串 carType 返回不同类型的汽车对象(SportCarJeepCarHatchbackCar)。

优点

  1. 简化对象创建:客户端不需要知道具体类的构造细节,只需传递参数给工厂方法即可获得对象。
  2. 集中管理对象创建:将对象创建的逻辑集中到工厂类中,便于维护和修改。
  3. 易于扩展:只需在工厂类中添加新的判断分支,即可支持新的产品类。

缺点

  1. 不符合开闭原则:每增加一个新的产品类,都需要修改工厂类的代码。
  2. 单一职责问题:工厂类职责较重,可能会变得复杂,尤其是在有很多产品类时。

使用场景

  1. 类的实例化逻辑复杂且频繁变化:通过工厂模式将实例化逻辑集中管理。
  2. 需要控制实例化过程:如对象池、缓存机制等。
  3. 不确定具体类时:客户端不需要知道要创建哪个具体类,只需要传递参数给工厂即可。

总结

简单工厂模式是一种有效的设计模式,通过工厂类创建对象,减少了客户端与具体类之间的耦合。虽然实现简单,但在需要扩展时不太灵活,因此适用于需求较为稳定的场景。如果系统的扩展性要求较高,可以考虑使用工厂方法模式或抽象工厂模式。

标签:carType,ICar,模式,工厂,getCar,简单,null,public
From: https://www.cnblogs.com/20lxj666/p/18384649

相关文章

  • 单列模式
    单列模式“单例模式(SingletonPattern),用于确保一个类只有一个实例,并提供一个全局访问点来访问这个实例。这个模式在需要控制资源的访问或者确保某些操作只有一个实例时使用。单例模式的特点唯一性:保证一个类只有一个实例。全局访问:提供一个全局的访问点来获取这个实例。延迟......
  • 23种设计模式
    23种设计模式设计模式是软件工程中用于解决特定问题的通用解决方案。常见的设计模式有24种,通常分为三大类:创建型、结构型和行为型。下面是对这24种设计模式的详细解释及其归类:1.创建型模式1.1单例模式(Singleton)目的:确保一个类只有一个实例,并提供一个全局访问点。适用场......
  • 适配器模式
    适配器模式适配器模式(AdapterPattern)是一种结构型设计模式,用于解决接口不兼容的问题。它的主要作用是将一个类的接口转换成客户端期望的另一个接口,使得原本由于接口不兼容而无法一起工作的类可以一起工作。概念目标接口(Target):客户端期望使用的接口。源接口(Adaptee):需要被......
  • 原型模式
    原型模式原型模式(PrototypePattern)是一种创建型设计模式,其主要目的是通过复制现有的对象来创建新的对象,而不是通过构造函数进行实例化。这个模式的核心思想是“克隆”现有对象,以获得新的实例,尤其是在创建成本较高的情况下非常有用。原型模式通常涉及以下几个角色:原型(Prototyp......
  • 建造者模式
    建造者模式建造者模式(BuilderPattern)是一种创建型设计模式,它用于分步骤地创建复杂对象,而无需直接调用构造函数。通过将对象的构建过程与其表示(即对象内部细节的实现)分离,建造者模式允许创建不同的对象表示,同时保持构造过程的一致性。特点分步骤创建:建造者模式将对象的创建过程......
  • 抽象工厂模式
    抽象工厂模式抽象工厂模式(AbstractFactoryPattern)是一种创建型设计模式,它提供一个接口,用于创建一系列相关或互相依赖的对象,而无需指定它们的具体类。抽象工厂模式常用于需要创建一组相关或依赖对象的场景,确保这些对象在不同的环境中可以协同工作。特点抽象工厂:定义了一组创......
  • 享元模式
    享元模式(FlyweightPattern)是一种结构型设计模式,旨在通过共享大量细粒度对象来减少内存使用。它在需要创建大量相似对象的场景中尤其有用,通过共享对象来降低内存开销,从而提高性能。核心思想享元模式将对象的状态分为两部分:内部状态(IntrinsicState):不随外部环境改变,可以共享的......
  • 外观模式
    外观模式外观模式(FacadePattern)是一种结构型设计模式,旨在为复杂的子系统提供一个简单的接口。它的核心思想是将系统的复杂性封装在一个统一的接口中,使得外部代码可以通过这个接口简化对复杂系统的操作。主要组成部分外观类(FacadeClass):提供一个简化的接口来访问复杂的子系统......
  • 装饰者模式
    装饰者模式装饰者模式(DecoratorPattern)是一种结构型设计模式,主要用于动态地给对象添加额外的功能,而不改变其结构。这个模式通过创建一个装饰类来包装原始对象,从而扩展其功能。主要角色组件(Component):定义一个接口或抽象类,声明可以被装饰的对象所共有的接口。具体组件(Concrete......
  • 组合模式
    组合模式组合模式(CompositePattern)是一种结构型设计模式,用于将对象组合成树形结构以表示“部分-整体”的层次关系。它允许客户端以统一的方式处理单个对象和对象集合,使得客户端不需要区分具体的对象类型,从而简化了代码的处理逻辑。主要组成部分Component(组件):定义了叶子对象和......