解锁设计模式的神秘面纱:编写无懈可击的代码之简单工厂设计模式

简介: 解锁设计模式的神秘面纱:编写无懈可击的代码之简单工厂设计模式

前言


深入了解设计模式及其常见简单设计模式

设计模式是一种在软件设计中广泛应用的概念,它们代表了解决特定问题或实现特定功能的经验性最佳实践和通用解决方案。设计模式是经过反复验证和测试的,可以帮助开发人员更有效地解决常见的设计问题,提高代码的可维护性、可扩展性和可重用性。


设计模式可以分为三个主要类别:创建型、结构型和行为型。创建型设计模式关注对象的创建机制,结构型设计模式关注类和对象的组合方式,而行为型设计模式关注对象之间的通信和协作方式。在这些类别中,存在许多常见的简单设计模式,

🌊 关注我不迷路,如果本篇文章对你有所帮助,或者你有什么疑问,欢迎在评论区留言,我一般看到都会回复的。大家点赞支持一下哟~ 💗




一、什么是设计模式


  1. 软件设计模式(Software Design Pattern),又称设计模式,
  2. 是一套被反复使用、多数人知晓的、代码设计经验的总结。
  3. 它描述了在软件设计过程中的一些不断重复发生的问题,以及该问题的解决方案。
  4. 也就是说,它是解决特定问题的一系列套路,具有一定的普遍性,可以反复使用代码设计经验的总结。




二、为什么要学习设计模式


  1. 使程序设计更加标准化、代码编制更加工程化,使软件开发效率大大提高,从而缩短软件的开发周期。
  2. 使设计的代码可重用性高、可读性强、可靠性高、灵活性好、可维护性强。
  3. 可以提高程序员的思维能力、编程能力和设计能力。
  4. 软件设计模式只是一个引导。在具体的软件幵发中,必须根据设计的应用系统的特点和要求来恰当选择。

5.对于简单的程序开发,可能写一个简单的算法要比引入某种设计模式更加容易。但对大项目的开发或者框架设计,用设计模式来组织代码显然更好。





三、GoF 23种设计模式


  1. 1995 年,艾瑞克·伽马(ErichGamma)、理査德·海尔姆(Richard Helm)、拉尔夫·约翰森(Ralph Johnson)、约翰·威利斯迪斯(John Vlissides)等 4 位作者
  2. 合作出版了《设计模式:可复用面向对象软件的基础》
  3. 在本教程中收录了 23 个设计模式,这是设计模式领域里程碑的事件
  4. 这 4 位作者在软件开发领域里也以他们的“四人组”(Gang of Four,GoF)匿名著称。




四、设计模式分类


根据模式是用来完成什么工作来划分,这种方式可分为创建型模式、结构型模式和行为型模式 3 种。

1、创建型模式5种

用于描述“怎样创建对象”,它的主要特点是“将对象的创建与使用分离”。工厂方法设计模式抽象工厂设计模式单例设计模式原型设计模式建造者设计模式



2、结构型模式7种

用于描述如何将类或对象按某种布局组成更大的结构

  • 代理设计模式
  • 适配器设计模式
  • 桥接设计模式
  • 装饰器设计模式
  • 外观设计模式
  • 享元设计模式
  • 组合设计模式




五、简单工厂模式


简单工厂模式是一种创建型设计模式,用于创建单个对象.


它主要由以下3个部分组成:

工厂类(Factory):负责创建单个对象。


抽象产品(Product):定义产品的接口。


具体产品(Concrete Product):实现抽象产品接口,提供具体的产品。


下面是一个简单的例子,展示了如何使用简单工厂模式创建一个汽车:

/**
 * 抽象产品(Product) 定义产品 需要实现的功能
 */
public interface Car {
    void start();
}
/**
 * 工厂类(Factory):负责创建单个对象
 */
public class CarFactory {
    public static Car createCar(String carType) {
        if (carType.equals("宝马")) {
            return new BMW();
        } else if (carType.equals("兰博基尼")) {
            return new lamborghini();
        } else {
            return null;
        }
    }
}
/**
 * 具体实现(Concrete Product) 创建车辆 
 */
public class BMW implements Car{
    @Override
    public void start() {
        System.out.println("启动宝马");
    }
}
/**
 * 启动车辆
 */
public class Client {
    public static void main(String[] args) {
        Car car = CarFactory.createCar("宝马");
        car.start();
        Car car1 = CarFactory.createCar("兰博基尼");
        car1.start();
    }
}

总结: 简单的说就是把创建对象交给工厂客户端就不需要自己new直接根据某类型直接拿即可 但是这违背了开闭原则




什么是开闭原则?


开闭原则是面向对象设计中的一项基本原则,指对扩展开放,对修改关闭。


它的主要目的是为了保护软件的可扩展性和可维护性,避免在修改软件的过程中对其他部分造成影响。


开闭原则的主要内容有以下几点:

对扩展开放:软件应该具有良好的扩展性,在不修改原有代码的情况下可以扩展新的功能。

对修改关闭:软件应该具有良好的稳定性,在修改原有代码的情况下不会对其他部分造成影响。


开闭原则的优点:

  1. 通过扩展已有的软件系统,可以提供新的行为,以满足对软件的新需求,使变化中的软件系统有一定的适应性和灵活性.。
  2. 已有的软件模块,特别是最重要的抽象层模块不能再修改,这就使变化中的软件系统有一定的稳定性和延续性。

开闭原则可以通过以下几种方式来实现:

  1. 将具体实现和抽象接口分离:通过使用抽象接口隔离具体实现,可以让软件在不修改原有代码的情况下扩展新的功能。
  2. 使用多态:通过多态的方式来实现抽象接口和具体实现之间的绑定,可以在运行时动态绑定,实现软件的扩展性。
  3. 使用模板方法:通过模板方法将算法的步骤固定,而具体实现由子类实现,实现软件的扩展性。 通过开闭原则的实现,
  4. 使用反射:通过客户端传递的对象字节码来创建实例,这样子就不需要进行修改原始工厂代码
/**
     * 使用反射实现开闭原则
     */
    public static <T> Car createCarOpen(Class<T> tClass) {
        Car car = null;
        try {
            Object instance = Class.forName(tClass.getName()).newInstance();
            if (instance instanceof Car) {
                car = (Car) instance;
            }
        } catch (ClassNotFoundException | InstantiationException | IllegalAccessException e) {
            throw new RuntimeException(e);
        }
        return car;
    }



简单工厂在源码中的应用

JDk当中Calendar实例的创建




最后


本期结束咱们下次再见👋~

🌊 关注我不迷路,如果本篇文章对你有所帮助,或者你有什么疑问,欢迎在评论区留言,我一般看到都会回复的。大家点赞支持一下哟~ 💗

相关文章
|
5月前
|
设计模式 数据库连接 PHP
PHP中的设计模式:提升代码的可维护性与扩展性在软件开发过程中,设计模式是开发者们经常用到的工具之一。它们提供了经过验证的解决方案,可以帮助我们解决常见的软件设计问题。本文将介绍PHP中常用的设计模式,以及如何利用这些模式来提高代码的可维护性和扩展性。我们将从基础的设计模式入手,逐步深入到更复杂的应用场景。通过实际案例分析,读者可以更好地理解如何在PHP开发中应用这些设计模式,从而写出更加高效、灵活和易于维护的代码。
本文探讨了PHP中常用的设计模式及其在实际项目中的应用。内容涵盖设计模式的基本概念、分类和具体使用场景,重点介绍了单例模式、工厂模式和观察者模式等常见模式。通过具体的代码示例,展示了如何在PHP项目中有效利用设计模式来提升代码的可维护性和扩展性。文章还讨论了设计模式的选择原则和注意事项,帮助开发者在不同情境下做出最佳决策。
|
25天前
|
设计模式 关系型数据库
「全网最细 + 实战源码案例」设计模式——简单工厂模式
简单工厂模式是一种创建型设计模式,通过工厂类根据传入参数创建不同类型的对象,也称“静态工厂方法”模式。其结构包括工厂类、产品接口和具体产品类。优点是封装性强、代码复用性好;缺点是扩展性差,增加新产品时需修改工厂类代码,违反开闭原则。适用于对象种类较少且调用者无需关心创建细节的场景。
53 19
|
4月前
|
设计模式 算法 数据库连接
PHP中的设计模式:提高代码的可维护性和扩展性
【10月更文挑战第13天】 本文将探讨PHP中常见的设计模式及其在实际项目中的应用。通过对比传统编程方式,我们将展示设计模式如何有效地提高代码的可维护性和扩展性。无论是单例模式确保类的单一实例,还是观察者模式实现对象间的松耦合,每一种设计模式都为开发者提供了解决特定问题的最佳实践。阅读本文后,读者将能更好地理解和应用这些设计模式,从而提升PHP编程的效率和质量。
|
4月前
|
设计模式 SQL 安全
PHP中的设计模式:单例模式的深入探索与实践在PHP开发领域,设计模式是解决常见问题的高效方案集合。它们不是具体的代码,而是一种编码和设计经验的总结。单例模式作为设计模式中的一种,确保了一个类仅有一个实例,并提供一个全局访问点。本文将深入探讨单例模式的基本概念、实现方式及其在PHP中的应用。
单例模式在PHP中的应用广泛,尤其在处理数据库连接、日志记录等场景时,能显著提高资源利用率和执行效率。本文从单例模式的定义出发,详细解释了其在PHP中的不同实现方法,并探讨了使用单例模式的优势与注意事项。通过对示例代码的分析,读者将能够理解如何在PHP项目中有效应用单例模式。
|
5月前
|
设计模式 算法 PHP
PHP中的设计模式:策略模式的深入探索与实践在软件开发的广袤天地中,PHP以其独特的魅力和强大的功能,成为无数开发者手中的得力工具。而在这条充满挑战与机遇的征途上,设计模式犹如一盏明灯,指引着我们穿越代码的迷雾,编写出更加高效、灵活且易于维护的程序。今天,就让我们聚焦于设计模式中的璀璨明珠——策略模式,深入探讨其在PHP中的实现方法及其实际应用价值。
策略模式,这一设计模式的核心在于它为软件设计带来了一种全新的视角和方法。它允许我们在运行时根据不同情况选择最适合的解决方案,从而极大地提高了程序的灵活性和可扩展性。在PHP这门广泛应用的编程语言中,策略模式同样大放异彩,为开发者们提供了丰富的创作空间。本文将从策略模式的基本概念入手,逐步深入到PHP中的实现细节,并通过一个具体的实例来展示其在实际项目中的应用效果。我们还将探讨策略模式的优势以及在实际应用中可能遇到的挑战和解决方案,为PHP开发者提供一份宝贵的参考。
|
5月前
|
设计模式 算法 PHP
PHP中的设计模式:提升代码的灵活性与可维护性
在本文中,我们将深入探讨PHP编程语言中的一种重要概念——设计模式。设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。它代表了最佳的实践,被有经验的面向对象的软件开发人员所采用。本文将通过具体的实例,展示如何在PHP项目中应用设计模式,以提高代码的灵活性和可维护性。无论你是PHP初学者还是经验丰富的开发者,都能从中获得有价值的见解。
|
5月前
|
设计模式 存储 数据库连接
探索PHP中的设计模式:提高代码的可维护性与扩展性
本文将深入探讨PHP中常用的设计模式,包括单例模式、工厂模式和观察者模式。通过具体的代码示例,展示如何在实际项目中应用这些设计模式,以提高代码的可维护性与扩展性。无论你是PHP初学者还是有一定经验的开发者,都可以通过本文的学习,提升你的编程技巧和项目架构能力。
|
5月前
|
设计模式
设计模式-工厂模式 Factory Pattern(简单工厂、工厂方法、抽象工厂)
这篇文章详细解释了工厂模式,包括简单工厂、工厂方法和抽象工厂三种类型。每种模式都通过代码示例展示了其应用场景和实现方法,并比较了它们之间的差异。简单工厂模式通过一个工厂类来创建各种产品;工厂方法模式通过定义一个创建对象的接口,由子类决定实例化哪个类;抽象工厂模式提供一个创建相关或依赖对象家族的接口,而不需要明确指定具体类。
设计模式-工厂模式 Factory Pattern(简单工厂、工厂方法、抽象工厂)
|
2月前
|
设计模式 前端开发 搜索推荐
前端必须掌握的设计模式——模板模式
模板模式(Template Pattern)是一种行为型设计模式,父类定义固定流程和步骤顺序,子类通过继承并重写特定方法实现具体步骤。适用于具有固定结构或流程的场景,如组装汽车、包装礼物等。举例来说,公司年会节目征集时,蜘蛛侠定义了歌曲的四个步骤:前奏、主歌、副歌、结尾。金刚狼和绿巨人根据此模板设计各自的表演内容。通过抽象类定义通用逻辑,子类实现个性化行为,从而减少重复代码。模板模式还支持钩子方法,允许跳过某些步骤,增加灵活性。
137 11
|
3月前
|
设计模式 安全 Java
Kotlin教程笔记(51) - 改良设计模式 - 构建者模式
Kotlin教程笔记(51) - 改良设计模式 - 构建者模式

热门文章

最新文章