OOP设计模式在路上(一)——简单工厂模式
前言
目前以LabVIEW为主要开发工具,熟悉常规开发框架(队列+状态机),个人用得比较多也感觉比较好用和强大的(JKI,AMC),也用它们开发过一些测试平台,但感觉到了一个瓶颈期,想寻求突破,提升LabVIEW的编程水平和思想,所以自己开始学习LVOOP,写此博文,一为自己知识的总结和思考消化,二是希望能为有同样困惑的小伙伴带来一点启发。
OOP设计模式学习书籍选用了程杰的《大话设计模式》,个人感觉还不错,挺适合我这种新手入门的,所以书中的内容在自己理解后会用Labview实现并分享出来,如有错误之处,还请大神指点一二。
简单工厂模式
所谓工厂模式,我的理解是,只需向工厂提供一个你想要的“产品标识”,工厂就可以生产出你想要的产品。也就是说,我们将容易变化的地方放到客户端,在客户端选择实例化谁,这个过程我认为就是工厂生产的过程。用计算器的例子来说,我们可以将不同的运算方法(+, -, *, /等)看成是产品,当我们在界面中触发这几个事件时,相当于是向工厂中传入了产品标识,从而可以得到我们想要的产品。
例如,当前需求实现加、减、乘、除四个运算的功能,来看LabVIEW的实现过程:

此项目仔细思考后,可以发现需求可变的地方很可能是需要我不断的去增加新的运算方法(比如今天添加一个平方运算,明天再添加一个开方运算,等等),那就可以考虑对变化的地方进行抽象,我们创建一个抽象的运算类,然后按照需求去新增具体的运算类去继承抽象的父类,如下图所示:


运算的过程都是一样的,提供两个参数,然后计算得到结果,只是算法不一样而已。那便可以在抽象类中定义两个私有数据(num1,num2),创建访问器对其进行读写操作,如下图所示。

接着再创建一个动态抽象方法(Get Result),获取计算的结果,抽象方法在具体的子类中实现。
然后根据需求创建四个具体的运算类,并重新Get Result方法,对应(+,-,*,/)的具体实现,如下图所示。

最后在创建一个工厂类,通过工厂便可按客户端需求实例指定对象,完成相应的运算操作。

当需求发送变化(如新增一个开方运算),只需新增一个开方运算类,在工厂类的product方法中添加新的“产品生产过程”,然后再添加新的事件触发即可,如下图所示:

从这个简单的例子便可感受到OOP的“魔力”,方便扩展,维护等。源码参考:链接:https://pan.baidu.com/s/13bY5QVC5ajJtllpmj7cNLA 密码:1l0o
OOP设计模式在路上(一)——简单工厂模式的更多相关文章
- Java设计模式(一) 简单工厂模式不简单
摘要:本文介绍了简单工厂模式的概念,优缺点,实现方式,以及结合Annotation和反射的改良方案(让简单工厂模式不简单).同时介绍了简单工厂模式(未)遵循的OOP原则.最后给出了简单工厂模式在JDB ...
- C#设计模式学习笔记:简单工厂模式(工厂方法模式前奏篇)
本笔记摘抄自:https://www.cnblogs.com/PatrickLiu/p/7551373.html,记录一下学习过程以备后续查用. 一.引言 简单工厂模式并不属于GoF23里面的设计模式 ...
- 设计模式(二)简单工厂模式(Simple Factory Pattern)
一.引言 这个系列也是自己对设计模式的一些学习笔记,希望对一些初学设计模式的人有所帮助的,在上一个专题中介绍了单例模式,在这个专题中继续为大家介绍一个比较容易理解的模式——简单工厂模式. 二.简单工厂 ...
- <一>读<<大话设计模式>>之简单工厂模式
工厂模式尽管简单.可是写下这篇文章却不简单. 第一:本人经过内心的挣扎后才决定開始写博文的.为什么呢,由于好长时间没有写了,对自己的文学功底也是好不自信.可是技术这东西你不写出来你真不知道自己掌握多少 ...
- Unity C# 设计模式(二)简单工厂模式
定义: 简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一. 简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例 ...
- Java设计模式学习笔记(二) 简单工厂模式
前言 本篇是设计模式学习笔记的其中一篇文章,如对其他模式有兴趣,可从该地址查找设计模式学习笔记汇总地址 正文开始... 1. 简介 简单工厂模式不属于GoF23中设计模式之一,但在软件开发中应用也较为 ...
- Java设计模式(三)简单工厂模式
定义与类型 定义:由一个工厂对象决定创建出哪一种产品类的实例 类型:创建型,但不属于GOF23种设计模式 适用场景 工厂类负责创建的对象比较少 客户端(应用层)只知道传入工厂类的参数,对于如何创建对象 ...
- C# 设计模式(1)——简单工厂模式、工厂模式、抽象工厂模式
1.前言 上一篇写了设计模式原则有助于我们开发程序的时候能写出高质量的代码(牵一发而不动全身),这个系列还是做个笔记温习一下各种设计模式,下面就看看简单工厂模式.工厂模式.抽象工厂模式. 2.简单工厂 ...
- PHP设计模式(一)简单工厂模式 (Simple Factory For PHP)
最近天气变化无常,身为程序猿的寡人!~终究难耐天气的挑战,病倒了,果然,程序猿还需多保养自己的身体,有句话这么说:一生只有两件事能报复你:不够努力的辜负和过度消耗身体的后患.话不多说,开始吧. 一.什 ...
- 《JS设计模式笔记》 2,简单工厂模式
<script type="text/javascript"> //简单工厂模式 //定义:由一个方法来决定到底要创建哪个类的实例,而这些实例经常拥有相同的接口.其实例 ...
随机推荐
- 2017年全国大学生物联网设计竞赛(TI杯)华东分赛区决赛总结
全国大学生物联网设计竞赛(TI杯)是由教育部高等学校计算机类教学指导委员会主办.上海交通大学电子信息与电气工程学院承办.德州仪器半导体技术公司(TI)协办的赛事,自2014年设立以来,一直是物联网领域 ...
- Android APK安装过程学习笔记
1.什么是APK APK,即Android Package,Android安装包.不同平台的安装文件格式都不同,类似于Windows的安装包是二进制的exe格式,Mac的安装包是dmg格式.APK可以 ...
- 【app】Hybrid?Native?不知道你就out了!
Hybrid?是个啥? 相信大家在平常生活中也会经常见到这个词,比如现在比较火的hybrid汽车(混合动力汽车) 那如果是针对于App而言呢? 那就要从App的分类说起了 目前主流应用程序大体分为三类 ...
- 【PHP篇】运算及流程控制
算数运算: 1.运算符罗列: 算数运算符:[+].[-].[*].[/].[%].[++].[--] 赋值运算符:[=].[+=].[-=].[*=].[/=].[%=].[.=] 比较运算符:[&g ...
- Python编程Day3—基本运算符、数据类型
一.基本运算符 1.算数运算 print(10/3) print(10//3) print(10%3) print(10**3) 2.比较运算 print(10==10) print(10!=10) ...
- 课程五(Sequence Models),第三周(Sequence models & Attention mechanism) —— 0.Practice questions:Sequence models & Attention mechanism
- logstash常用插件解析
官方地址:https://www.elastic.co/guide/en/logstash-versioned-plugins/current/index.html 配置文件写法: # 日志导入inp ...
- 浅谈《think in java》:二 一切都是对象
清晨坐在图书馆,今天聊聊早晨的“果实”. 清单1. 引用操作:对象创建:存储地方:基本类型:数组 “reference”:引用[操作对象的标识符] 例子:创建String类型的引用,并不是对象. St ...
- Net使用RdKafka引发异常RdKafka.Internal.LibRdKafka 的类型初始值设定项引发异常
在Net中VS2015用RdKafka组件开发消息发布和消费,引发下面的异常 RdKafka.Internal.LibRdKafka 的类型初始值设定项引发异常System.TypeInitializ ...
- CentOS安装使用.netcore极简教程(免费提供学习服务器)
本文目标是指引从未使用过Linux的.Neter,如何在CentOS7上安装.Net Core环境,以及部署.Net Core应用. 仅针对CentOS,其它Linux系统类似,命令环节稍加调整: 需 ...