java 设计模式(包括工厂介绍)

什么是设计模式

设计模式是在软件设计中反复出现的问题的通用解决方案。它们是经过多次验证和应用的指导原则,旨在帮助软件开发人员解决特定类型的问题,提高代码的可维护性、可扩展性和重用性。

设计模式是一种抽象化的思维方式,可以帮助开发人员更好地组织和设计他们的代码。它们提供了一种通用的框架,可以用于解决各种不同的软件设计问题。设计模式不是完整的代码,而是一种描述问题和解决方案之间关系的模板。

设计模式并不是一成不变的法则,而是根据不同的问题和情境来决定是否使用以及如何使用。了解和应用设计模式可以帮助开发人员更好地组织代码,提高代码的可读性和可维护性,同时也有助于促进团队之间的合作和沟通。

设计模式的分类

  1. 创建型模式(Creational):关注对象的实例化过程,包括了如何实例化对象、隐藏对象的创建细节等。常见的创建型模式有单例模式、工厂模式、抽象工厂模式等。
  2. 结构型模式(Structural):关注对象之间的组合方式,以达到构建更大结构的目标。这些模式帮助你定义对象之间的关系,从而实现更大的结构。常见的结构型模式有适配器模式、装饰器模式、代理模式等。
  3. 行为型模式(Behavioral):关注对象之间的通信方式,以及如何合作共同完成任务。这些模式涉及到对象之间的交互、责任分配等。常见的行为型模式有观察者模式、策略模式、命令模式等。

设计模式的基本要素

  1. 模式名称:每个设计模式都有一个简洁的名称,用于描述问题、解决方案和效果。这个名称有助于在交流中快速指代模式。
  2. 问题:描述了在什么情况下应该考虑使用特定的设计模式。问题部分阐述了该模式试图解决的具体设计难题。
  3. 解决方案:解决方案部分提供了一个详细的设计指南,描述了如何组织类、对象以及它们之间的关系,以解决特定问题。这包括了每个角色的职责、协作方式等。
  4. 效果:描述了模式应用的效果及使用模式应权衡的问题。

种设计模式概览

java 设计模式(包括工厂介绍)_第1张图片

工厂方法模式 


     1.1、简单工厂模式(Simple Factory Pattern)
             简单工厂模式 是工厂方法设计模式的一种实现方式,用于封装对象的实例化过程。在该模式中,通过一个工厂类来根据客户端的 参数 请求创建不同的产品对象,从而实现对象的创建与使用代码的解耦。但是 简单工厂模式违反了开闭原则

简单工厂模式的一般结构和要点:

产品接口(Product):定义了具体产品对象的共同方法,可以是一个抽象类或者接口。

具体产品(Concrete Product):实现了产品接口的具体产品类。

工厂类(Factory):负责创建具体产品对象的类。它通常包含一个静态方法,根据客户端的请求来创建相应的产品对象。

// 产品接口
interface Product {
    void operation();
}
 
// 具体产品A
class ConcreteProductA implements Product {
    @Override
    public void operation() {
        System.out.println("生产了A产品");
    }
}
 
// 具体产品B
class ConcreteProductB implements Product {
    @Override
    public void operation() {
        System.out.println("生产了B产品");
    }
}
 
 
// 工厂类
class Factory {
    public static Product createProduct(String type) {
        if (type.equals("A")) {
            return new ConcreteProductA();
        } else if (type.equals("B")) {
            return new ConcreteProductB();
        } else {
            return null;
        }
    }
}
 
// 使用示例
public class Main {
    public static void main(String[] args) {
        // 使用工厂类创建产品A
        Product productA = Factory.createProduct("A");
        productA.operation();
 
        // 使用工厂类创建产品B
        Product productB = Factory.createProduct("B");
        productB.operation();
    }
}
小结:

       简单工厂模式,客户端通过工厂类的静态方法来创建具体产品的实例,而不需要直接实例化产品对象。客户端只需要知道产品的类型(例如"A"或"B"),工厂类根据类型创建相应的产品对象。这样可以隐藏实例化过程,使得客户端与具体产品的实现解耦。

简单工厂模式适用于以下场景:

客户端只需要知道产品的类型,不需要关心具体产品的实现细节。
需要集中管理对象的创建过程,避免在多个地方重复创建对象的代码。
需要通过一个公共接口来创建不同类型的产品对象。


注意:

       简单工厂模式违反了开闭原则,如果需要添加新的产品类型,就需要修改工厂类的代码。如果需要更好的扩展性和灵活性,可以考虑使用工厂方法模式或抽象工厂模式

你可能感兴趣的:(java,设计模式,开发语言)