我写项目的思路和“自然架构”

我写项目的思路

    三层的思路是要把页面(UI、数据显示)、业务逻辑、数据处理(也叫持久化)分离开来处理,思路自然是好的,但是一到了实际应用中,好多人就会遇到一点小小的问题,于是产生了好多的争论。我觉得一个好的解决方案使用起来应该更容易一些,不应该导致很多人“误入歧途”。所以我觉得三层的分割思路视乎有一点点小问题。

    所以我就想了一个自己的分割方式——业务逻辑与代码分离开来!分离之后就要找到一个契合的点,把分开的两个东东在连系起来,这个契合点就是数据库。(我觉得三层的契合点是实体类)

    我的具体想法就是: 1、 想方设法把业务逻辑(也就是客户提出来的需求)转换成数据库结构。 2、 设计数据库 3、 实现基本的增删改查、统计汇总、报表打印、导出、审批流、个性化设置等功能。

    请注意,第三点里面的“实现”是完全不考虑业务逻辑的,也就是说代码写完了之后可以实现各种行业、各种项目的要求(也就是不同的业务逻辑)。以不变应万变的效果。

【示意图】

    怎么样简单吧,如果把数据库看成中心的话,那么左面是业务逻辑,右面就是程序实现(也就是编码)。如果只看右面的话,那就是和业务逻辑无关的,比如说“添加”,就是添加数据,管他是添加产品信息,还是添加员工信息,还是添加请假信息,还是批准一个出车申请,都是添加数据,那么我是不是可以只考虑如何去添加数据,而不用去考虑添加的到底是员工信息还是请假单呢?于是我就弄出来了一个表单控件,这个控件可以实现添加、修改数据的功能,不管是什么样的业务逻辑(客户的需求),只要是添加、修改数据的、单条记录的,那么就可以使用这个表单控件来实现。这就是我的目的。类似的,如果我要查询,那么我可以使用查询控件(还需要分页控件和现实数据的控件来配合),如果我要向导出到Excel,那也可以使用对应的控件来完成。而我在实现这些控件(编写控件的代码)的时候,根本不用去想业务逻辑。当然控件完成之后要拿到具体的项目里面去验证,然后发现不足的地方再去完善,然后在去检验、完善、检验……。不断进行下去。

    那么具体的实现方式是什么呢?简单的说就是写一大堆的自定义控件,然后把这些控件有机的联系在一起。

 上次说了,显示数据的控件 + QuickPager + Pager_SQL + DataAccessLibrary + 数据库

就是一个分页的解决方案,再加上查询控件,就可以实现分页和查询功能。

那么同理,表单控件 + Insert、Update的封装 + DataAccessLibrary + 数据库

就是一个单条记录的添加修改的解决方案,再加一个控件就可以实现多条记录的批量修改。

列表和表单结合起来,就是主从表的维护

    还有数状结构的功能节点、按钮组、导Excel等控件,这些控件结合起来就可以完成三分之一以上的功能,还有权限管理、个性化设置,一些小的项目就可以横扫了。我还没有做过大项目,可能到了大项目里面,我的这些幼稚的想法就不适合了,但是我有信心,只要我接触了大项目,那么我就会利用我在大项目里面了解、体验、掌握到的经验来完善我的这个想法。因为我就是这么一路走过来的,我想我还没有走到终点吧,呵呵。

自然架构

    自然架构,自然而然,水到渠成。 信息管理——信息——数据——数据库——关系型数据库

    这就是“自然”,最后为什么是关系型数据库呢?因为他已经好多年了,已经很好很强大了,如果以后OO数据库也可以像关系型数据库这样强大,或者更加的强大,那么最后一个就可以改成OO数据库了。

    做了几年的小项目,发现一个问题,对于客户来说什么最重要?数据!我的一个客户是99年成立的,由于行业特殊,有许多数据是要从99年开始一直记录下来,一直到很久很久,于是到现在十年了,至少上千家公司的信息需要录入到新的项目里,以前是保存在Excel或者Access里面的。程序可以换,数据库也可以换,但是数据是不能没有的。

    那我们要做什么呢?就是让客户可以更加方便、快捷、安全的管理数据。我们仅仅是做了一个“工具”,让客户用我们的工具来维护数据。如果企业管理器做得更“傻瓜”一点的话,可能我们就失业了。

    我并不是完全排斥面向对象,我的那些自定义控件,一开始的时候没有用OO的思路来做(因为一开始的时候不会OO),造成了代码很臃肿,难以维护和扩展。后来学习了OO和设计模式,发现用继承、基类、接口,简单抽象工厂、策略模式、模板模式等来做自定义控件确实很方便,结构也比较清楚。这个就是OO的优势。

    什么适合就用什么,不必强求。顺其自然、不做重复劳动,这就是自然架构的宗旨

    我知道以数据库为中心,会把范围限制到一个很小的范围,但是这点范围对于我来说也是主够大了,至少两年内是不会感觉小的。一个人的能力有限,能研究出来一点,也是不容易了。 

 ===================================

欢迎大家多提宝贵意见。谢谢

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏服务端技术杂谈

聊聊Web App、Hybrid App与Native App的设计差异

目前主流应用程序大体分为三类:Web App、Hybrid App、 Native App。 ? 一、Web App、Hybrid App、Native App...

37380
来自专栏知晓程序

技术开发者怎么看微信小程序?值得一试,但……

18430
来自专栏河湾欢儿的专栏

Hybrid App开发模式

Hybrid App(混合模式移动应用)是指介于web-app、native-app这两者之间的app,兼具“Native App良好用户交互体验的优势”和“W...

69420
来自专栏非著名程序员

Kotlin 实现仿开眼 App

开眼视频是一款精品短视频日报应用,该项目是用kotlin,借助已知的一些开眼接口写的一个仿《开眼App》,主要是为了学习kotlin和一些UI效果。 GitHu...

25480
来自专栏前沿技墅

揭秘React同构应用

侯策:硕士毕业于法国国立高等电信学校。曾任职于BePATIENT集团,负责互联网+医疗平台的研发。曾任职于法国能源和苏伊士集团,参与欧洲天然气运输和费用系统的研...

19330
来自专栏SAP最佳业务实践

SAP最佳业务实践:无变式配置按订单生产(148)-5产成品的技术变更

image.png 1、CSKB客户请求技术变更 客户请求作技术变更。步骤的目的是更改产品的配置(添加物料 R20)。 在BOM 浏览器中,用户参数设置是用来...

40040
来自专栏IMWeb前端团队

RAIL简介:一个以用户为中心的性能模型

本文作者:IMWeb huscot 原文出处:IMWeb社区 未经同意,禁止转载 web性能优化,这是大家耳熟能详的东西了。 一说到性能优化,大家可能...

26870
来自专栏企鹅号快讯

UI前端同学回来抢经验,react native开发实战五部曲的实战与锤炼,咬牙学完保证变大牛!

背景 现在很多移动项目全都专项纯rn开发,对于rn的应用趋势不言而喻,学习一些rn的语法并不是十分困难,但是如何在项目中灵活运用,增加实战项目经验,这还是比较困...

50260
来自专栏全栈工程师成长之路

网站项目开发学习手册

45560
来自专栏FreeBuf

新年大作战:抵制恶意推广,守护老爸的旧电脑

每年过年回家,基本上都需要做一件事情:重新清理我爸电脑上的垃圾软件或者直接重装系统。 想我爸也是个国家级教师,平时工作使用电脑的频次并不低,却对于电脑这东西跟绝...

22660

扫码关注云+社区

领取腾讯云代金券