23种设计模式创建型模式详细介绍之工厂模式
Posted 牛哄哄的柯南
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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【共勉】
↓ ↓ ↓ ↓ ↓ ↓
以上是关于23种设计模式创建型模式详细介绍之工厂模式的主要内容,如果未能解决你的问题,请参考以下文章