首页 > 其他分享 >模板与实例在系统中的应用

模板与实例在系统中的应用

时间:2024-05-25 09:07:12浏览次数:27  
标签:创建 系统 实例 会员 应用 礼品 模板

模板与实例在系统中的应用

模板是什么

模板定义了通用的结构和行为,包含了一系列方法和属性,这些方法和属性为系统提供了参考。

实例是什么

实例是模板的具体实现,继承了模板的结构和行为,并为模板中的抽象和属性提供了实现。

模板是定义系统有什么功能,实例就是这些功能的具体实现。在系统设计上,如何识别出产品描述的需要什么功能和如何实现功能这点上,如果有理论支撑,将规避不少系统设计的坑。

例如

产品需要设计一个会员系统,用户在系统下单购买了年卡商品就会开通会员。
需求如何转化成系统设计
我们需要设计一个后端操作界面,让运营能够配置对应的年卡商品。

用户在下单时,订单里有年卡商品,就要给用户生成一个会员。

在这个描述中,运营创建的每一条记录为模板,用户按模板生成的每一条记录为实例。

那么开通会员是我们的实例,而创建实例需要用户下单购买了年卡商品,那么购买动作是发起创建实例的开始,购买年卡商品是创建实例的条件

后续,如果会员系统要指定用户购买指定商品就开通会员。
那么模板上就是指定用户和指定商品。
实例化会员的时候,判断条件就多了指定用户和指定商品的判断。

总结出4个要素

  1. 模板

  2. 实例

  3. 动作

  4. 条件

线下门店做会员日活动,要求每个门店能够自主决定做会员日的日期和选择什么样的礼品,系统怎么设计?

实例:会员日活动
条件:选择日期、选择礼品
动作:门店创建
模板:日期选择区间,可供选择的礼品列表

这几个条件就能设计出一个系统雏形,现实场景中,功能特别多,当功能多了以后,就会有各种分类、组合等组成一个庞大且复杂的系统。
对于这种功能越来越多,组合方式也越来越多的情况,类似于设计模式中的factory,创建复杂实例不是简单的new出来,而是需要各种数据协调,有些实例创建只需要简单几个参数,有得需要借助其他平台的数据才能完成。对于使用者来说,不需关心系统是如何创建的,只需要关心自己关心的业务即可。

当业务再复杂点,还是每个门店能自主创建会员日活动,但每个会员日活动又不一样。比如有些需要送礼品,有些不需要送礼品,这时候的解法如下。

实例:会员日活动
条件:选择日期、选择礼品
动作:门店创建
模板:日期选择区间,活动A可选礼品,活动B不可选礼品

来到这一步,就发现,业务变化的条件不是创建实例上,而是创建实例的源头,模板的变化导致实例化也要跟着变,那么我们的解决办法是什么了,参考抽象工厂模式。

首先,工厂模式是模板+数据生成实例,那么抽象工厂模式就是不同条件的模板 + 数据生成不同类型实例。关键点是要生成功能相似对象,只是抽象工厂多了变量,创建者本身是不同类型的,在创建工厂时,需要将变量作为条件。

模板与实例是一种创建型设计,是设计模式中的工厂模式,业务的变化无限,但设计有限。将业务语言翻译成系统语言,一套成熟的方法论能保证系统非常强大且容易维护。

这套理论,延展到领域模型、数据表设计、代码实现也同样适用。

标签:创建,系统,实例,会员,应用,礼品,模板
From: https://www.cnblogs.com/wxwall/p/18211992

相关文章

  • 酷黑简洁大气体育直播自适应模板赛事直播门户网站源码
    源码名称:酷黑简洁大气体育直播自适应模板赛事直播门户网站源码开发环境:帝国cms7.5安装环境:php+mysql支持PC与手机端同步生成html(多端同步生成插件)带软件采集,可以挂着自动采集发布,无需人工操作!演示地址:http://demo51.52muban.cc/模板特点:1、程序伪静态版本,实时采集更新,......
  • 【智能算法应用】遗传算法求解车间布局优化问题
    目录1.问题背景2.车间布局数学模型3.算法过程4.结果展示5.参考文献6.代码获取1.问题背景工厂设施布置的规划一直是工业工程领域不断研究和探索的内容,其中最具代表性之一的是系统布置设计(systemlayoutplanning,SLP)方法。作为一种经典且有效的方法,其为设施布......
  • 【智能算法应用】白鲸优化算法求解二维路径规划问题
    目录1.算法原理2.路径规划数学模型3.结果展示4.参考文献5.代码获取1.算法原理【智能算法】白鲸优化算法(BWO)原理及实现2.路径规划数学模型优化目标路径规划问题需要考虑三点:全局总路径最优避免碰撞到障碍物路径平滑性全局总路径最优考虑路径规划问题的全局最......
  • 【Text2SQL 论文】SQLova:首次将 PLM 应用到 NL2SQL 中
    论文:AComprehensiveExplorationonWikiSQLwithTable-AwareWordContextualization⭐⭐⭐⭐KR2MLWorkshopatNeurIPS2019,arXiv:1902.01069Code:SQLova|GitHub参考文章:将预训练语言模型引入WikiSQL任务|CSDN一、论文速度这篇论文对SQLNet进行改进,首......
  • 基于SpringBoot+Vue的电商应用系统的设计与实现
    摘 要现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本电商应用系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达......
  • Linux应用——进程基础
    谁来调用main函数在运行main函数之前,会有一段引导代码,最终由这段代码调用main函数,这段引导代码不需要自己编写,而是在编译、链接中由链接器将这段程序链接到应用程序中,构成最终的可执行文件,加载器会将可执行文件加载到内存中进程的终止正常终止在main函数中通过retur......
  • Bmp图像原理与应用
    BMP图像原理与应用简介BMP(Bitmap)是一种常见的位图图像文件格式,它使用像素点阵列来表示图像。BMP文件通常以.bmp为扩展名。BMP格式最大的特征是没有任何的压缩,因此文件尺寸比较大,不适合网络传输,但是优点是这种图像格式中的数据读取出来不需要任何解码器解码就可以直接使用,所以为......
  • LCD显示原理及应用
    Linux环境下LCD显示原理及应用1.LCD原理概述LCD(LiquidCrystalDisplay)液晶显示器是一种广泛应用于各种电子设备中的显示技术,它利用液晶分子在电场作用下的排列状态来控制光的透过,从而实现图像显示。2.LCD驱动原理LCD显示屏的驱动通常需要硬件和软件两方面的支持:硬件支持:......
  • 实验5 C语言指针应用编程
    1.实验任务1task1_1.c1#include<stdio.h>2#defineN534voidinput(intx[],intn);5voidoutput(intx[],intn);6voidfind_min_max(intx[],intn,int*pmin,int*pmax);78intmain()9{10inta[N];11intmin,max;1213......
  • 【Fireyer】一款Android平台环境检测应用
    Fireyer是为了校验我们的虚拟化环境构建是否存在缺陷,可以保障我们的每次更新的产品质量,提升开发效率。项目已开源:☞Github:https://www.github.com/iofomo/fireyer☜如果您也喜欢Fireyer,别忘了给我们点个星。1.说明fire+eyer=Fireyer(火眼),Fireyer项目是我们在做......