设计模式之--简单工厂模式

简谈基于FPGA的千兆以太网设计 简谈基于FPGA的千兆以太网设计 今天给大侠带来简谈基于FPGA的千兆以太网设计,话不多说,上货。 今天我们来简单的聊一聊以太网,以太网在FPGA学习中属于比较高级的内容了,有些大侠肯定会感觉以太网学习起来非常不容易。其实,我可以告诉大家,前期学习的基础打扎实了,后期的学习也没那么难。总之就是说难没那么难,说容易也不是那么容易。那么,言归正传,下面让我们一起来聊一聊以太网的学习。 说起以太网,大家可能就会想到百兆以太网、千兆以太网以及万兆以太网等等。局域以太网从10M开始发展,经历几多的变迁,发展到现 阅读详情


今天看《大话设计模式》,然后网上搜相关代码验证一下,看到了这篇博客:http://www.cnblogs.com/sdlypyzq/archive/2012/08/14/2637759.html,开头几句话甚得我心。

是啊,“衣带渐宽终不悔,为伊消得人憔悴”,那不就是我吗。

参考文章还有:http://blog.youkuaiyun.com/weiwenlongll/article/details/6918164


好了,下面是正文。


简单工厂模式:

简单工厂模式(Simple Factory Pattern)属于类的创新型模式,又叫静态工厂方法模式(Static Factory Method Pattern),是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。


简单工厂模式的UML图:



简单工厂模式包含的角色及相应的职责如下:

工厂角色(Creator):这是简单工厂模式的核心,由它负责创建所有的类的内部逻辑。当然工厂类必须能够被外部调用,创建所需的产品对象。

抽象产品角色(Product):简单工厂模式所创建的所有对象的父类。注意这里的父类可以是接口也可以是抽像类,它负责描述所有实例锁共有的公共接口。

具体产品角色(Concreate Produce):简单工厂所创建的具体实例对象,这些具体的产品往往都拥有共同的父类。


简单工厂模式理解:

简单工厂模式解决的问题是如何去实例化一个合适的对象。

简单工厂模式的核心思想就是:有一个类来负责创建实例的过程。具体来说,把产品看成一系列类的集合,这些类是由某个抽象类或者接口派生出来的一个对象树。而工厂类用来产生一个合适的对象来满足客户的要求。

   如果简单工厂模式所涉及到的具体产品之间没有共同的逻辑,那么我们就可以使用接口来扮演抽象产品的角色;如果具体产品之间有功能的逻辑或,我们就必须把这些共同的东西提取出来,放在一个抽象类中,然后让具体产品继承抽象类。为实现更好复用的目的,共同的东西总是应该抽象出来的。


下面举例一段代码,是《大话设计模式》一书中第一个例子:

.h文件:

#ifndef _FACTORY_H
#define _FACTORY_H

#include <assert.h>
#include <iostream>
#include <stdlib.h>

class operators {
public:
    void set_operator_nums(int num1, int num2) {
        num1_ = num1;
        num2_ = num2;
    }   
    virtual int get_result() = 0;
protected:
    int num1_;
    int num2_;
};

class operator_add : public operators {
public:
    int get_result() {
        return num1_ + num2_;
    }   
};

class operator_sub : public operators {
public:
    int get_result() {
        return num1_ - num2_;
    }   
};

class operation_factory {
public:
    static operators* get_operator(char ch){
        assert(ch == '+' || ch == '-');
        operators* oper = NULL;
        try {
            switch(ch){
                case '+':
                    oper = new operator_add;
                    break;
                case '-':
                    oper = new operator_sub;
                    break;
            }
        }
        catch(std::bad_alloc& e){
            std::cout<<e.what()<<std::endl;
            exit(1);
        }
        return oper;
    }
};

#endif

测试文件:

#include "factory.h"

#include <assert.h>
#include <iostream>
using namespace std;

int main()
{
    //operators op;   //error, abstruct class can not declare a object.
    
    char operate = '+';
    operators* oper = operation_factory::get_operator(operate);
    oper->set_operator_nums(3, 4); 
    int result = oper->get_result();
    assert(result == 7); 

    operate = '-';
    oper = operation_factory::get_operator(operate);
    oper->set_operator_nums(4, 3); 
    result = oper->get_result();
    assert(result == 1); 

    delete oper;
    return 0;
}

我们需要做一个具有加减功能的计算器。那我们就把加减操作提取出来封装成operator_add和operator_sub两个类,把它们共同逻辑操作数提取出来放在抽象类operators中,

使用了一个工厂类operation_factory来实例化我们需要的操作对象,operators获得子类的指针,这是多态的表现,然后调用指向子类的方法,获得计算结果。

android 14.0 控制wifi启用禁用功能实现 在14.0的产品rom定制化开发中,在产品开发中,对于功能的开发的功能也是挺多的,而在对于wifi的功能定制需求,有要求需要通过系统属性来控制wifi开关是否可以打开 来控制是否可以连接wifi,打开控制wifi的功能,接下来分析wifi的开启流程来实现该功能的实现 阅读详情

相关推荐

Miniconda入门:在CentOS上的安装、基本操作、目录结构、卸载

Miniconda是一个 免费的 轻量级的 conda安装程序 它只包含conda、Python、pip、zlib等基础的文件和依赖包 使用conda install命令可从Anaconda存储库中安装额外的conda包 简介 下载 安装 基本操作 虚拟环境的操作 包的操作 目录结构 卸载

ArYe 1万+

设计模式系列(四)简单工厂模式(Simple Factory Pattern/Static Factory Method)

设计模式系列(四)简单工厂模式 (Simple Factory Pattern/Static Factory Method)     简单工厂模式又被成为静态工厂方法,所以其外文名一般是Static Factory Method。其属于创建型模式,本质上并不属于23种GOF设计模式之一,这种模式可以称之为一种编程习惯,算是一种比较良好的设计习惯。那么什么是简单工厂设计模式呢?从概念上来

君临天下的博客 1088

Netty源码分析系列之writeAndFlush()下

write()只会将数据只是发送到了ChannelOutboundBuffer 缓冲区中,还没有被发送到操作系统的套接字中只有当调用了 flush()方法后,才会真正将数据发送到套接字中。那么 flush()方法的源码又是如何执行的呢?

天堂的博客 1574

设计模式-简单工厂模式(Simple Factory Pattern)

简单工厂模式 定义 设计一个工厂类,给工厂类传入参数决定创建哪一种产品类的实例。 简单工厂模式是属于创建型模式,又叫做静态工厂方法模式。 类型 创建型,但不属于GOF23种设计模式。 适用场景 应用层只需要知道传入工厂类的参数,对于如何创建对象(逻辑)不需要关心。 优点 只需要传入一个正确的参数,就可以获取你所需要的对象,而无需知道其创建细节。 缺点 工厂类的职责相对过重,不易维护,增加新的产品可...

kaven 5132

虚拟机安装VMware Tools

单击虚拟机-->安装VMware Tool 安装之后会有一个VMware Tools硬盘,里面有VMware Tools.tar.gz的压缩包 按照提示解压它,然后执行vmware-install.pl安装VMware Tools 将安装包放到/tmp目录下。可以直接拽过去,也可以使用cp或者mv命令 进入tmp文件目录并解压此文件包 cd /tmp ...

afei001 621

最适合入门的100个深度学习项目

本专栏整理了《PyTorch深度学习项目实战100例》,内包含了各种不同的深度学习项目,包含项目原理以及源码,每一个项目实例都附带有完整的代码+数据集。

优快云 精品推荐 12万+

Java 设计模式之静态工厂方法模式

静态工厂方法模式,又称为简单工厂模式,是最简单最易理解的工厂模式,本文通过一个 “月饼” 例子,一起来学习下这种设计模式吧!

牛角尖 2442

【LLC快速上手系列】LLC轻载时,死区时间怎么调才对?别再傻傻乱搞了!

死区时间,就是指。如果你死区设得好,就能让开通前 ( V_DS to 0 ),完美实现!

weixin_43199439的博客 1857

秒懂设计模式之简单工厂模式(Simple Factory Pattern)

前言 人在IT江湖飘,不懂设计模式咋装逼? 定义 使用场景 实现 public abstract class Shape { public abstract void draw(); } public class Rectangle extends Shape { @Override public void draw() { System.out.prin...

ShuSheng007的程序人生 2126

R语言Dunnett’s检验实战:寻找差异组之间的效果

总结起来,本文以R语言为工具,演示了如何使用Dunnett’s检验来找出单因素方差分析中不同组之间的效果差异。在本篇文章中,我们将通过R语言实战演示如何使用Dunnett’s检验来寻找不同组之间的效果差异。在分析结果时,通常我们会关注具有显著差异的组别,并基于Dunnett’s检验结果进行进一步的解释和讨论。首先,我们需要准备一组数据,假设我们有一个实验,涉及到四个不同的处理组和一个对照组。当我们发现方差分析结果显示存在显著差异时,我们可以进一步进行Dunnett’s检验来确定具体哪些组之间存在差异。

CoderExtra的博客 1105

开关电源-LLC基本原理

本文详细介绍了LLC谐振变换器的兴起原因、基本工作原理、变换器特点及拓扑结构。重点讨论了半桥、全桥LLC及其软开关技术,包括零电压开关(ZVS)和零电流开关(ZCS)。通过理解简单的谐振电路(RL、RC、LC)来阐述LLC如何改变电压增益,以及如何通过调节频率实现输出电压的稳定性。

让你爱上电路设计 2万+

JAVA设计模式之 简单工厂模式【Simple Factory Pattern】

一、概述 er、适用场景

小吕丶Code阶区 5319

西门子S7-1200PLC与FANUC机器人进行PROFINET IO通信的具体方法和步骤详解

西门子S7-1200PLC与FANUC机器人进行PROFINET IO通信的具体方法和步骤详解

Robot_PLC_HMI_Automation 1万+

【设计模式】——简单工厂模式(Simple Factory Pattern)

简单工厂模式又称为静态工厂方法模式,它定义了一个工厂类,这个类根据传入的参数不同返回不同类的实例。这些实例通常都具有共同的父类或接口。简单工厂模式的核心在于将对象的创建逻辑封装在工厂类中,客户端通过调用工厂类的静态方法来获取所需的对象,而无需直接实例化具体产品类。

J^T的博客 1758

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

深入理解设计模式-简单工厂模式(静态工厂方法模式)

文章目录一、定义二、使用场景三、代码样例1.需求2.类图3.运算操作类4.操作工厂类5.客户端类四、优缺点结尾 一、定义 简单工厂模式是属于创建型模式,在简单工厂模式中用于被创建实例的方法通常为静态(static)方法,因此又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。 二、使用场景 工厂类负责创建的对

少说,多做 1万+

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

C#设计模式读书笔记之简单工厂模式(Simple Factory Pattern)

简单工厂模式(Simple Factory Pattern)【使用频率:★★★☆☆】 1. 概述:   将一个具体类的实例化交给一个静态工厂方法来执行,它不属于GOF的23种设计模式,但现实中却经常会用到 2. 模式中的角色   2.1 工厂类(Simple Factory): 只包含了创建具体类的静态方法。   2.2 抽象产品(Product):定义简单工厂中要返回的产品。   2...

qq826364410的专栏 350

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

嵌入式系统接口技术全解析:从UART到CAN

嵌入式开发的核心之一在于硬件接口——设备间如何通过特定时序和电平完成可靠通信。UART、I2C、SPI、CAN等接口看似简单,却直接决定系统的稳定性与实时性。理解它们的原理、差异和适用场景,是选型与调试的基础,也是从裸机走向RTOS和Linux的关键技能。在传感器采集、工业控制、物联网节点等典型应用中,接口设计总是交织着启动流程、存储映射、中断调度和电路细节,一个上拉电阻或极性配置都可能造成通信失败。以实战经验串联起嵌入式系统的知识框架,详细拆解常用接口的选型理由、常见坑点与排查方法,帮助开发者建立从物理层

weixin_34408624的博客 160

Java 设计模式-简单工厂模式

Java 设计模式-简单工厂模式 文章目录Java 设计模式-简单工厂模式介绍简单工厂模式的结构与实现**简单工厂模式的优缺点和适用环境** 介绍 简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。 定义:定义一个工厂类,他可以根据参数的不同返回不同类的实例,被创建的实例通常都具

霍英俊 2513

设计模式-简单工厂模式/静态工厂方法(Static Factory Method)

定义 简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。 优点 工厂类是整个模式的关键.包含了必要的逻辑判断,根据外界给定的信息,决定究竟应该创建哪个具体类的对象.通过使用工

Robert学习分享 2395

【设计模式】简单工厂模式(Simple Factory Pattern)Go 实例

该模式对对象创建管理方式最为简单,因为其仅仅简单的对不同类对象的创建进行了一层薄薄的封装。该模式通过向工厂传递类型来指定要创建的对象,UML 类图如下: 下面我们使用汽车生产来讲解该模式: package factory import "fmt" // 声明 Car 标准接口 // 包含 setName、getName 和 drive 方法 type Car interface { setName() getName() drive() } // 声明 BydCar type BydCar st

lightserver.cn 1万+

Java设计模式之简单工厂模式

简单工厂模式(SimpleFactory)是类的创建模式,又叫做静态工厂方法模式,是最基本的设计模式。由一个工厂对象决定创建出哪一种产品的实例,三个重要的角色,工厂类、目标类抽象接口、目标对象类;工厂类包含静态的工厂方法。 伪代码 package testdaemo.bean; import org.springframework.util.Assert; /** * 简单工厂模式...

Mrmamenghui的博客 273

设计模式之简单工厂模式Simple Factory Pattern

设计模式之简单工厂模式Simple Factory Pattern 2004-04-20 23:36:06 guoyan19811021 http://www.21tx.com/school/dotnet/wz/37WTV2FTZZFP1NJCHS.shtml在面向对象(OO)程序中,我们经常看到的一种模式就是简单工厂模式(Simple Factory Pattern)

837

设计模式—— 简单工厂模式(Simple Factory Pattern)

简单工厂模式简单工厂模式1、背景2、定义3、特征4、应用参考 简单工厂模式 1、背景 我开一家披萨店,当客户需要某种披萨并且我这家店里也能做的时候,我就会为其提供所需要的披萨(当然是要钱的哈哈),如果其所需的我这没有,则是另外的情况,后面会谈。这时候,我这家 披萨店就可以看做工厂(Factory),而生产出来的披萨被成为产品(Product),披萨的名称则被称为参数,工厂可以根据参数的不同返回不同的产品,这就是简单工厂模式。 工厂模式有一种非常形象的描述,建立对象的类就如一个工厂,而需要被建立的对象就是一

JMW1407的博客 9790

[设计模式]简单工厂模式

简单工厂模式 (Simple Factory)又叫静态工厂方法(Static Factory Method)模式。 简单工厂模式通常是定义一个工厂类,这个类可以根据不同变量返回不同类的产品实例。 但是简单工厂模式不属于23种Gof设计模式之一。 优点 简单工厂模式的工厂类是整个模式的关键。其中包含了必要的逻辑判断,根据外部信息,决定究竟应该创建哪个具体类的对象。 通过使用简单...

weixin_30825199的博客 92

php设计模式简单代码,php设计模式之简单工厂模式详解

本文以实例形式较为详细的介绍了PHP设计模式的简单工厂模式,对于进行PHP程序设计来说有很好的借鉴作用。具体如下:一、概念简单工厂模式 【静态工厂方法模式】(Static Factory Method)是类的创建模式工厂模式的几种形态:1、简单工厂模式(Simple Factory)又叫做 静态工厂方法模式(Static Factory Method)2、工厂方法模式(Factory Method...

weixin_31995337的博客 189

简单工厂模式——设计模式

现实生活中,原始社会自给自足(没有工厂),农耕社会小作坊(简单工厂,民间酒坊),工业革命流水线(工厂方法,自产自销),现代产业链代工厂(抽象工厂,富士康)。我们的项目代码同样是由简到繁一步一步迭代而来的,但对于调用者来说,却越来越简单。 在日常开发中,凡是需要生成复杂对象的地方,都可以尝试考虑使用工厂模式来代替。工厂模式的定义:定义一个创建产品对象的工厂接口,将产品对象的实际创建工作推迟到具体子工厂类当中。这满足创建型模式中所要求的“创建与使用相分离”的特点。 按实际业务场景划分,工厂模式有 3 种不同

Allence的博客 268
上一篇: 线性时间排序--计数排序、基数排序、桶排序
下一篇: muduo库的框架剖析及总结
FreeeLinux
博客等级 码龄11年 421粉丝 356原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值