• 架构之路实战项目记录(二) 忘记数据库 开始抽象


    对我而言,认识BLL层的作用,或者领域模型驱动的含义,最大的干扰来自数据库。

    我们很清楚的知道UI层的含义,也知道数据层是做什么的。但对于一个简单的(甚至是相当复杂的)系统而言,实在不知道除了对数据库进行增删改查以外,还能做些什么?发布一篇博客,

    不就是在数据库里插入一条记录么?点击一下推荐,不就是在数据库里做一个update么?

    为了避免数据库的干扰,这里,我们设定:不使用关系数据库做存储!请大家牢记,为了更清晰,更深刻的认识到这一点,我们再次明确,我们将使用最流行的NoSQL技术。牛叉吧!兴奋吧?

    打满了鸡血吧!

    好的,设计的任务交给你了,小李同学。

    接下来,你怎么办?哎呀,我对NoSQL还不熟呀(不熟?其实除了名字知道以外,其他什么都根本就不知道)。马上开始研究一下NoSQL,看看里面有没有什么库呀,表呀之类的,好像那里面

    用的是集合? 

    如果你这样走下去的话,就偏离了DDD的宗旨了(但也不能说你“错”了)。

    我是这样做的。

    问:这个系统要做什么?有哪些功能?

    答:发布博客,博客可以评论。可以提问题,回答问题。当然,做这些事,都得注册登录……

    好,根据以上信息,我们可以抽象出这几个对象。

    这是一个良好的开端。再细致点,博客和问题,都必须有标题;而博客的评论和问题的答案,不需要标题;但不管是博客还是问题,评论还是回答,都会有一个作者,都要发布时都要记录下

    发布的时间,甚至发布者的IP(基于中国人都知道的原因)。博客和问题,还要记录下浏览量……

    到这里,你是不是嗅到了一种什么味道?“不管……还是……都……”,共同的东西!那么想到面向对象的三大特征,“继承”就呼之欲出了。所以我们通过抽象,得到了以下的对象。

    View Code

    这样做的好处,很明显的,就是减少了重复代码。“代码越少越好”,我深以为然。当然,随之而来,还有其他好处,容后再表,呵呵。这里只说一句,良好的抽象是实现设计模式的基础。

    其实,只要有面向对象的思想,进行这样的抽象是相当容易的。但我们常常会被关系型数据库所干扰(尤其是有一定开发经验的程序员),而不敢进行这种“大胆的”抽象。因为即使将代码写到这里了,也得面临一个很现实的问题,接下来怎么办?最终我们怎么把这些对象持久化(保存到数据库或其他媒介中去)。这就是我们接下来要进行的工作了。

    最后,对那些还想着数据库的同学,再重复强调一点:这个项目,我们用NoSQL!哦,sorry,改主意了,大家反映NoSQL太难了,又说干脆用xml文件吧。

    架构实战
    通过“www.zyfei.net”项目,讲解架构思路
    架构之路--实战项目记录(二) 忘记数据库 开始抽象
    摘要: 对我而言,认识BLL层的作用,或者领域模型驱动的含义,最大的干扰来自数据库。我们很清楚的知道UI层的含义,也知道数据层是做什么的。但对于一个简单的(甚至是相当复杂的)系统而言,实在不知道除了对数据库进行增删改查以外,还能做些什么?发布一篇博客,不就是在数据库里插入一条记录么?点击一下推荐,不就是在数据库里做一个update么?为了避免数据库的干扰,这里,我们设定:不使用关系数据库做存储!请大家牢记,为了更清晰,更深刻的认识到这一点,我们再次明确,我们将使用最流行的NoSQL技术。牛叉吧!兴奋吧?打满了鸡血吧!好的,设计的任务交给你了,小李同学。接下来,你怎么办?哎呀,我对NoSQL还不熟呀(不阅读全文
    posted @ 2012-04-02 21:46 自由飞 阅读(865) | 评论 (2) 编辑
     
    架构之路--实战项目记录(一) 概述
    摘要: 我正在开发的系统是一个简单的“博客+论坛+SNS”系统。应该比较好理解吧,就“博客园+csdn+开心网”模式。具体的功能在需要用到的时候详细讲解即可。(一)架构选择Asp.net: WebForm vs MVC我最后选择的还是MVC。只能说是个人偏好,感觉WebForm:1、对最终生成的Html不好控制2、框架略显笨重(页面生命周期,Ajax封装等)另外,asp.net MVC是新生事物,也有一个学习的机会。本来还一直觉得MVC中<%= %>难看(受asp影响),但后来razor出来以后,就彻底放心了。分层:两层 vs 三层在这个项目开始之前,我对三层都有看法,和很多同学一样,不知阅读全文
    posted @ 2012-04-01 13:43 自由飞 阅读(1614) | 评论 (7) 编辑
     
    架构之路--实战项目记录
    摘要: 讲解架构一直是一个难题。但首先郑重声明,我说这句话的意思是:所以,我也很难找到资料用来学习架构。而并不是我很牛叉,准备怎么怎么,深入浅出的让各位同学茅塞顿开,瞬间光芒大作,醍醐灌顶之类的。但我选择了这样一个方式,用一个真实的项目来展示我关于架构的一些想法。只是想法,并不一定正确,所以希望能和各位一起交流、谈论甚至争论,有所提高。目录:架构之路--实战项目记录(一) 概述架构之路--实战项目记录(二) 忘记数据库 开始抽象阅读全文
    posted @ 2012-04-01 13:07 自由飞 阅读(112) | 评论 (1) 编辑
  • 相关阅读:
    LeetCode Related Info
    LeetCode Climbing Stairs
    Linux命令语句秘籍
    Java基础学习 —— io
    Jquery的入门学习
    Java基础学习 —— bat处理文件
    Java基础学习 —— 线程
    Java基础学习——泛型
    java基础学习——集合
    两个div叠加触发事件发生闪烁问题
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/2432418.html
Copyright © 2020-2023  润新知