在客户端代码中使用工厂类创建具体的产品对象。 示例代码一 Code /* 1.简单工厂模式:struct写法 https://developer.aliyun.com/article/1171580 */ typedefenum { SUV, BUS, CAR, }CAR_TYPE; typedefstruct { intprice; char* type; }CAR_MODEL; CAR_MODEL *car_factory(CAR_TYPE type) { CAR_MODEL *c...
还需要定义一个创建硬盘对象的类(即:工厂)。工厂类根据参数决定创建哪家供应商的硬盘对象。 4、实现硬盘对象创建 参与者: (1)Product: HardDisk 定义硬盘对象的接口 (2)Concrete Product: SeagateHardDisk, ToshibaHardDisk 实现不同供应商的硬盘 (3)SimpleFactory: ...
这些业务细节就可以放在创建对象的逻辑(工厂创建逻辑)中,主程序只要设置指定的参数,就能通过创建对象的逻辑获取相应对象(工厂对象)。 接下来会分别举例说明简单工厂模式、工厂方法模式的C语言实现。 2.1 简单工厂模式举例 #include <stdio.h> #include <stdlib.h> enum { PRODUCTA = 1, PRODUCTB, PRODUCTC, };...
f.func = test_func;//结构体的函数指针指向test_func()f.func(1);//调用结构体的函数指针,与调用test_func(1)效果一致//通过上述例子,我们可以看到通过结构体+函数指针可以实现封装信息并指向另外一个函数//有了这个特性我们可以实现一个简单工厂模式 本设计实现一个简单的工厂模式,一个生产不同种类水果的工厂。
这就是简单工厂模式在C语言中实现的一个案例。尽管它实现业务和细节的分离,但是它依然还有明显的缺陷,那就是工厂函数factory()里面不可避免会出现if/else、switch/case等判断语句,使得每加入一家新的商城时,都要去修改这个函数,违背了开放-封闭原则(开放封闭原则是指模块接受扩展功能的代码,同时模块不应该修改它的源...
C语言 | 简单工厂方法模式实现例子 中生产电脑的模拟场景来看。 在简单工厂方法中,不同供应商的硬盘都由HardDiskFactory创建出来。这种做法存在几个问题: 1、当供应商很多时,HardDiskFactory就会成为一个“过大类” 2、假设现在要新引入一家硬盘供应商,那就需要在HardDiskFactory的Create方法中增加一个case分支。在...
简单工厂模式(Factory Pattern)是属于创建型模式,在该模式中,用户通过使用一个共同的接口来创建的具体对象。 简单理解:工厂是对具体产品(对象)的抽象,工厂提供统一接口创建不同的产品。本质上就是定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。
简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。
工厂设计模式,一共有三种: 1. 简单工厂(Sample Factory) 2. 工厂方法 (Factory Method) 3. 抽象工厂 (Abstract Factory) 先来两张图看下 1. 简单工厂 (Sample Factory) 定义一个协议,创建几个遵守该协议的实现类,实现类实现自己的功能,和一个工厂类,这个工厂类用来实现业务逻辑,外部调用工厂时,完全不知工厂...