Java之工厂模式解析

目录

    • 前言
    • 1. 概念
    • 2. 工厂模式的三种实现
    • 3. 示例代码
    • 4. 适用开发场景
    • 5. 总结

前言

工厂模式是最常用的设计模式之一,合理使用工厂模式具有以下好处。

好处 描述
解耦 将对象的创建和使用分离,降低类之间的耦合度。
易于扩展 支持新产品的加入,无需修改已有代码,具备良好的可扩展性。
屏蔽复杂性 对客户端简化代码,只需关心产品的接口而不需关心具体创建过程。
统一管理 提供集中化的工厂类,有利于集中控制和管理对象的生命周期。
符合设计原则 符合单一职责原则、依赖倒置原则等面向对象设计原则。

1. 概念

工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式,同时隐藏了创建对象的复杂性。工厂模式主要分为三种:简单工厂模式、工厂方法模式和抽象工厂模式。

2. 工厂模式的三种实现

  • 简单工厂模式:

    简单工厂模式也叫静态工厂方法模式,通过一个工厂类,根据传入的参数,返回对应的对象实例。

  • 工厂方法模式:

    工厂方法模式定义一个创建产品对象的接口,可以实现多个产品类,一个产品类实现一个产品实例。从这里可以看出来,简单工厂模式是工厂方法模式的简化版,适用于只需少数个产品类的场景。工厂方法模式让类的实例化推迟到子类中进行。

  • 抽象工厂模式:

    抽象工厂模式提供一个创建一系列相关或相互依赖对象的接口,可以实现多个工厂类,每个工厂类实现多个产品。

3. 示例代码

  • 简单工厂模式:

    简单工厂模式(静态工厂模式)中有一个工厂类,通过传入不同的参数来创建不同的产品。

     public class SimpleFactory {
        public static Product createProduct(String type) {
            if ("A".equals(type)) {
                return new ConcreteProductA();
            } else if ("B".equals(type)) {
                return new ConcreteProductB();
            }
            // 可以增加其他产品的创建逻辑
            return null;
        }
    }
    
  • 工厂方法模式:

    工厂方法模式中,定义了一个抽象产品,可以实现多个产品类,一个产品类实现一个产品实例,客户端通过调用工厂方法来创建对象。

     public interface Creator {
        Product factoryMethod();
    }
    
    public class ConcreteCreatorA implements Creator {
        public Product factoryMethod() {
            return new ConcreteProductA();
        }
    }
    
    public class ConcreteCreatorB implements Creator {
        public Product factoryMethod() {
            return new ConcreteProductB();
        }
    		}
    
  • ** 抽象工厂模式:**

           抽象工厂模式中,定义了多个抽象产品,可以实现多个工厂类,每个工厂类实现多个产品。
    
    	public interface AbstractFactory {
    	    ProductA createProductA();
    	    ProductB createProductB();
    	}
    	
    	public class ConcreteFactory1 implements AbstractFactory {
    	    public ProductA createProductA() {
    	        return new ConcreteProductA1();
    	    }
    	
    	    public ProductB createProductB() {
    	        return new ConcreteProductB1();
    	    }
    	}
    	
    	public class ConcreteFactory2 implements AbstractFactory {
    	    public ProductA createProductA() {
    	        return new ConcreteProductA2();
    	    }
    	
    	    public ProductB createProductB() {
    	        return new ConcreteProductB2();
    	    }
    	}
    	```
    
    
    

4. 适用开发场景

  • 简单工厂模式:

    在需要根据条件动态创建对象的场景中使用,例如根据用户类型创建不同的登录方式。

  • 工厂方法模式:

    在需要为每个产品提供独立的工厂类,使得系统易于扩展的场景中使用,例如日志记录模块。

  • 抽象工厂模式:

    在需要创建一系列相关或依赖对象的家族,且不希望依赖具体类的场景中使用,例如图形界面工具包。

5. 总结

工厂模式 概念
简单工厂模式 简单工厂模式也叫静态工厂方法模式,通过一个工厂类,根据传入的参数,返回对应的对象实例。
工厂方法模式 工厂方法模式定义一个创建产品对象的接口,可以实现多个产品类,一个产品类实现一个产品实例。从这里可以看出来,简单工厂模式是工厂方法模式的简化版,适用于只需少数个产品类的场景。工厂方法模式让类的实例化推迟到子类中进行。
抽象工厂模式 抽象工厂模式提供一个创建一系列相关或相互依赖对象的接口,可以实现多个工厂类,每个工厂类实现多个产品。

你可能感兴趣的:(学习笔记,java,开发语言)