说一下你熟悉的设计模式?

  1. Singleton(单例模式)

    • 目标:确保一个类只有一个实例,并提供一个全局访问点。

    • 实现:通常使用私有构造函数、静态方法或枚举等技术来实现。

  2. Factory Method(工厂方法模式)

    • 目标:定义一个创建产品对象的接口,但让子类决定实例化哪一个类。

    • 实现:通过继承和多态实现。

  3. Abstract Factory(抽象工厂模式)

    • 目标:提供一个接口用于创建一系列相关或相互依赖的对象,而无需指定它们具体的类。

    • 实现:通过抽象类或接口定义产品族。

简单工厂和抽象工厂有什么区别?

  • 简单工厂模式:

    • 定义:提供一个创建产品家族中多个产品的静态工厂方法,由这个方法负责创建具体的产品实例。

    • 实现:通常在一个静态方法中选择合适的构造器来创建对象。

    • 优点:封装了产品的创建细节,简化了客户端代码。

    • 缺点:每增加一个新的产品都需要修改工厂类,违反开闭原则。

  • 抽象工厂模式:

    • 定义:提供一个接口,用于创建一系列相关或相互依赖的对象,而无需指定它们具体的类。

    • 实现:通过抽象类或接口定义一个产品族的创建方法,具体的工厂实现这些方法来创建相应的产品。

    • 优点:可以创建一个完整的产品系列,易于扩展新产品族。

    • 缺点:如果产品族非常庞大,那么工厂也会变得复杂。

总结来说,简单工厂适用于创建单一类型的对象,而抽象工厂则适用于创建一组相关的对象。简单工厂通常在一个类中实现,而抽象工厂则通过一系列类或接口实现。简单工厂更适合于简单的场景,而抽象工厂适合于更复杂的场景,尤其是当需要创建多种相关产品时。