架构和改善程序复用性设计1:面向对象性

开发 架构
今天主要说一下“系统的复用性离不开系统的面向对象性”,这也是本架构和改善程序复用性设计系列文章的第一篇。

非常抱歉让大家等了这么久,这个系列的第一讲才开始,呵呵,目录写出来后,就是按着目录一个一个的讲出来,与大家一起分享我的开发经验了,呵呵。

今天主要说一下“系统的复用性离不开系统的面向对象性”,我们可能有一种感觉,那就是在开发一个项目时用到了一段代码块,在另一个项目中也用到了,我们通常的作法就是ctrl+C,然后ctrl+V,呵呵,这样做的好处就是省事,不好的地方也是“不省事”,为什么这样说呢?

省事:因为它不需要考虑什么,只是为了实现而去实现,而这肯定是不提倡这种方式的,因为使用这种方式编程的人,永远不会体会到其中的乐趣,可能只是为了工资而去工作。

不省事:在程序的测试阶段,工程师们突然发现了你复制的那块代码出现问题了,可能是性能问题,也可能是业务问题,也可能是。。。,反正是出问题了,那你作为一个负责的程序员,会怎么样,当然是一个一个的去改了,同样是ctrl+C,ctrl+V,但此时你的一定再后悔,不如把块代码,或者那个方法,再或者那个类,再或者那个项目给抽象了。

今天我就来说一下系统要想得到复用,必须把系统先进行抽象,也就是你的系统代码要符合面向对象的特性,这个系列我将会用最近开发的“通用后台系统”做为实例,讲给大家

这个系统中,用到了4个解决方案文件夹,我下面来分别说一下它们

一 Project.Common文件夹:它为所有项目提供一个公用的,不依赖于其它项目的项目集合,如图:

image

OnlinePayment:支付功能模块相关

Standard:服务端和端户端持久化相关

VCommons:公用功能类库相关

VConfig:全局公用配置信息相关

二 Project.Core文件夹:它是对N层模型的抽象,将Web(UI),Entity(Model),Data(DAL)等各层的核心公用代码抽象出来,形成一个与领域无关的项目集合,如图:

image

Data.Commons:对数据层的抽象,本例中使用了Linq To SQL做为底层ORM,它同样适用于Entity Frameworks

Entity.Commons:对实体层的抽象,本例中的实体全部是对linq to sql原生实体的扩展,这也多谢微软的partial关键字,并对实体赋值进行了跟踪

Web.Commons:对WEB层的抽象,本例是标准的MVC模式的风格,对controller进行了抽象,以极对公用特性的抽象,如登陆验证等

三 Common.Background文件夹:它是对标准的后台管理系统的抽象,包括最基础的后台基础,有对用户,菜单,权限,部门等模块的管理,它适用于所有后台项目,如图:

image

Common.Background.Data:对后台数据层的实现,它继承自Data.Commons

Common.Background.Entity:对后台实体层的实现,它继承自Entity.Commons

Common.Background.Service:后台业务层的实现,它处理最基础的业务逻辑

Common.Background.Web.Controllers:后台UI层的实现,它继承自Web.Commons

四 个性化项目文件夹,这个就是和领域有关的真正的项目了,它有自己的架构标准,如图

image

我们可以看到,它也是标准的三层架构,前台和后台公用Data和Entity层,项目比较简单,没有使用Service层。

通过一个真正项目的解说,您是否对如何提高程序的复用性有一个比较清晰的认识了呢?

原文链接:http://www.cnblogs.com/lori/archive/2012/04/27/2473698.html

责任编辑:彭凡 来源: 博客园
相关推荐

2023-03-07 08:30:09

MCube模板缓存

2024-06-24 00:20:00

通用性可维护性可扩展性

2021-03-02 20:43:08

架构后端设计

2022-06-10 07:17:07

重构Java应用

2010-12-28 19:55:20

软件架构可靠性

2016-11-03 13:11:21

phpphp框架

2011-07-05 15:22:04

程序设计

2011-07-05 15:59:57

面向对象编程

2011-07-05 16:05:43

面向对象编程

2023-10-10 18:12:02

函数编程语言

2021-08-17 11:01:19

物联网智能家居IoT

2013-04-17 10:46:54

面向对象

2022-06-07 14:13:58

Simula编程语言GNU cim

2022-06-06 00:43:35

系统架构设计

2023-08-31 08:28:32

软件窗口TTN_SHOW

2010-06-30 16:17:09

NAC安全终端安全

2020-04-18 20:21:16

网络安全可视性安全工具

2022-08-12 06:26:54

微服务架构

2017-08-29 20:19:56

对象存储架构存储数据中心

2010-09-13 10:39:43

CSSCSS文件
点赞
收藏

51CTO技术栈公众号