23种设计模式【创建型模式】详细介绍之【工厂模式】

23种设计模式【创建型模式】详细介绍之【工厂模式】

设计模式的分类和应用场景总结

可以查看专栏设计模式:设计模式

工厂模式

工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。

在工厂模式中,我们定义一个接口来创建对象,由子类决定要实例化的类是哪一个。这样,客户端就可以通过接口来创建对象,而无需指定具体的类名,这样做的好处是提高了系统的灵活性。

下面是一个简单的工厂模式示例,它定义了一个创建产品的接口,并由具体的工厂实现来创建产品。

Java 代码示例:

// 定义一个产品接口
public interface Product {
    
    
  // 定义一个方法
  void method();
}

// 定义一个具体的产品类
public class ConcreteProduct implements Product {
    
    
  // 实现方法
  @Override
  public void method() {
    
    
    // 业务逻辑
  }
}

// 定义一个工厂接口
public interface Factory {
    
    
  // 定义一个创建产品的方法
  Product createProduct();
}

// 定义一个具体的工厂类
public class ConcreteFactory implements Factory {
    
    
  // 实现创建产品的方法
  @Override
  public Product createProduct() {
    
    
    // 使用默认的产品实现
    return new ConcreteProduct();
  }
}

// 使用工厂方法模式
public class Client {
    
    
  public static void main(String[] args) {
    
    
    // 使用默认的工厂实现
    Factory factory = new ConcreteFactory();
     // 创建产品实例
    Product product = factory.createProduct();
    // 调用方法
    product.method();
  }
}

抽象工厂模式

抽象工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。

在抽象工厂模式中,我们定义一个抽象工厂来创建一族相关或依赖的对象,由具体的工厂子类来决定要实例化的类是哪一个。这样,客户端就可以通过抽象工厂来创建对象,而无需指定具体的类名,这样做的好处是提高了系统的灵活性。

下面是一个简单的抽象工厂模式示例,它定义了一个抽象工厂来创建产品族,并由具体的工厂实现来创建产品。

Java 代码示例:

// 定义一个产品接口
public interface Product {
    
    
  // 定义一个方法
  void method();
}

// 定义一个具体的产品类
public class ConcreteProduct implements Product {
    
    
  // 实现方法
  @Override
  public void method() {
    
    
    // 业务逻辑
  }
}

// 定义一个抽象工厂接口
public interface AbstractFactory {
    
    
  // 定义一个创建产品的方法
  Product createProduct();
}

// 定义一个具体的工厂类
public class ConcreteFactory implements AbstractFactory {
    
    
  // 实现创建产品的方法
  @Override
  public Product createProduct() {
    
    
    // 使用默认的产品实现
    return new ConcreteProduct();
    }
}

// 使用抽象工厂模式
public class Client {
    
    
	public static void main(String[] args) {
    
    
		// 使用默认的工厂实现
		AbstractFactory factory = new ConcreteFactory();
		// 创建产品实例
		Product product = factory.createProduct();
		// 调用方法
		product.method();
	}
}

版权声明:
原创博主:牛哄哄的柯南
博主原文链接:https://keafmd.blog.csdn.net/
个人博客链接:https://www.keafmd.top/

看完如果对你有帮助,感谢点击下面的点赞支持!
[哈哈][抱拳]

在这里插入图片描述
加油!

共同努力!

Keafmd

感谢支持牛哄哄的柯南,期待你的三连+关注~~

keep accumulate for my dream【共勉】

                                                       ↓   ↓   ↓   ↓   ↓   ↓  

猜你喜欢

转载自blog.csdn.net/weixin_43883917/article/details/128375100