Fullstar

Archives

  • December 2025
  • August 2024
  • July 2024
  • February 2024
  • November 2023
  • August 2023
  • July 2023
  • January 2023
  • November 2022
  • October 2022
  • September 2022
  • February 2022
  • January 2022
  • September 2021
  • January 2021
  • December 2020
  • November 2020
  • October 2020
  • September 2020
  • August 2020
  • July 2020

Categories

  • Code
  • Lens
  • Life
0
Fullstar
  • Code

设计模式-工厂模式

  • September 9, 2020
  • Brandon

Looking for a Shorter Overview?

AI Summary

工厂模式通过抽象工厂接口与具体工厂子类,将具体产品的创建职责分离出来。客户端只依赖工厂和产品接口,因此可以替换猫、狗、鱼等产品实现;简单工厂则用静态方法创建不同类型的产品。

Key Moments

AI-generated
1

工厂方法模式的核心职责

顶层工厂接口定义产品创建方法,具体工厂子类决定实例化哪一种具体产品。
2

实例化延迟与模式别名

该模式将产品实例化延迟到具体工厂类,因此也称为多态性工厂方法模式或虚拟构造子模式。
3

客户端通过工厂使用产品

客户端接收工厂基类并调用CreateAnimal获取IAnimal,再通过统一的Sale接口使用猫、狗或鱼产品。
4

简单工厂的静态创建方式

简单工厂模式也称静态工厂模式,可在产品类中通过静态方法和重载构造函数创建不同类型的产品。
Total
0
Shares
0
0
0

一.工厂模式结构示例

工厂模式示例

定义一个创建产品的接口(顶层工厂类),而由该接口的子类(具体工厂类),决定具体实例化哪种产品。即将产品的实例化延迟到接口的子类(具体工厂类)中。也称多态性工厂方法模式或虚拟构造子模式

二.代码示例

public class Main {
    public static void main(String[] args){
        Client client = new Client();
        client.CreateAndUse(new FactoryCat());
    }

}
class Client{
    public void CreateAndUse(Factory factory){
        IAnimal iAnimal = factory.CreateAnimal();
        iAnimal.Sale();
    }
}
abstract class Factory{
    abstract IAnimal CreateAnimal();
}//工厂基类

class FactoryDog extends Factory{
    IAnimal CreateAnimal(){
        return new Dog();
    }
}
class FactoryCat extends Factory{
    IAnimal CreateAnimal(){
        return new Cat();
    }
}

class FactoryFish extends Factory{
    IAnimal CreateAnimal(){
        return new Fish();
    }
}

interface IAnimal{
    void Sale();
}
class Dog implements IAnimal{
    public void Sale(){
        System.out.println("sale dog");
    }
}
class Cat implements IAnimal{
    public void Sale(){
        System.out.println("sale cat");
    }
}
class Fish implements IAnimal{
    public void Sale(){
        System.out.println("sale fish");
    }
}

三.简单工厂模式

简单工厂模式也称为静态工厂模式,且有时工程类可以简单移入产品类中。如下为单产品重载构造函数下应用简单工厂方法示例

class Product{
public:
    static Product CreateNormalProduct(int num);
    static Product CreateFloatProduct(int num,float );
    static Product CreateSpecialProduct(Some& one);
protected:
    Product(int num);
    Product(int num,float a);
    Product(Some& para);
};

Related Posts

AI-generated

设计模式-单例模式

从立即创建到按需加载,本文用代码对比饥饿式、注册式、延迟式单例,并重点说明双重检查锁与静态内部类如何兼顾线程安全和延迟初始化。
56.9% match September 10, 2020

Java 多线程

从 Thread、Runnable 到 Lambda 创建线程,再理解 join 等待、yield 让出 CPU,以及线程池核心线程、阻塞队列和最大线程数的完整调度规则。
42.2% match September 26, 2020

Questions Answered

AI-generated

工厂模式如何决定具体产品的实例化?

由具体工厂子类实现创建接口并返回对应产品实例。

客户端如何避免依赖具体动物类?

客户端仅接收工厂和 IAnimal 接口并调用统一方法。

如何通过工厂创建猫、狗和鱼?

分别使用对应具体工厂返回各自的动物实现对象。

简单工厂模式怎样创建不同产品?

使用静态创建方法和不同参数构造所需产品对象。

Next Up

掌握单例实现
掌握线程调度
构建项目结构
构建健壮代码
Total
0
Shares
Share 0
Tweet 0
Pin it 0
Brandon

Previous Article
  • Code

汇编基础:常用指令(X86)

  • August 28, 2020
  • Brandon
View Post
Next Article
  • Code

设计模式-单例模式

  • September 10, 2020
  • Brandon
View Post
You May Also Like
View Post
  • Code

Letta部署记录

  • Brandon
  • December 26, 2025
View Post
  • Code

WordPress 后台任务利器:使用 BGRunner 构建可靠的异步处理

  • Brandon
  • December 14, 2025
View Post
  • Code

WordPress image offload

  • Brandon
  • December 14, 2025
View Post
  • Code

ComfyUI应用手册

  • Brandon
  • December 6, 2025
View Post
  • Code

Leetcode Java常用代码

  • Brandon
  • February 17, 2024
View Post
  • Code

Golang入门

  • Brandon
  • February 4, 2024
View Post
  • Code

Setting Up and Maintaining a Ubuntu Environment for My Home Server

  • Brandon
  • November 24, 2023
View Post
  • Code

Swift Learning Log

  • Brandon
  • August 31, 2023

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Fullstar

Input your search keywords and press Enter.

设计模式-单例模式

Java 多线程

cmake应用

异常处理的合理使用与防御式编程

Swift Learning Log

AOP reading notes

UP NEXT

设计模式-单例模式

56.9% match September 10, 2020 0