自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(23)
  • 收藏
  • 关注

软件的逻辑层次

基本层次软件的逻辑结构可以划分为下面四个基本层次:从下往上依次是:1:基础设施层——这个层次是纯技术层次,解决的是系统的物理问题,比如database gateway、网络通信、对象容器……这个部分与业务需求关系不大,是系统的物理条件。2:business对象——在这个层次上,业务要素出现了,业务领域中的概念在这里实现。比如一个航运公司的系统,这里就应该有航线、航班、座位、乘客、登机牌...

2006-12-19 20:09:24 418

也讨论一把:不必非oo不可

看了一篇讨论:http://www.cnblogs.com/yimlin/archive/2006/11/30/578333.html有些感想:并不是所有的行为都必须属于某个对象,有的行为似乎放在任何一个对象中都不合适,那就单独放在那里好了,没必要非要造出一个对象来,更不能把它硬安在某个对象上。按照oop的方法,软件的逻辑架构可以分成下面几个层次:1:基础设施层——这个层次解决的是物理问题,...

2006-12-01 03:20:00 146

无痛苦的软件维护——文档和代码

程序维护的时候经常遇到两个困难:1、不知道这段代码是实现什么功能的(code —— function);2、不知道这个功能是实现什么需求的(function —— business)。解决第一个问题是比较容易的,大家都是搞技术的,一头扎进代码里去,看上几十分钟,通常就能明白:原来这段代码是从数据库里面找到前三个月一直处于停机状态的号码,然后把这些号码放到一个叫做QUIT_USER的数据表里面去。第...

2006-11-03 16:00:00 157

NGOSS的一点简单概念

NGOSS(Next Generation Operational Support Systems)是由TMF(Tele Management Forum)提出的,他用于电信领域,是构建下一代OSS/BSS系统的框架。TMF提供了技术中立构架(TNA)作为NGOSS解决方案的技术构架,这样就把NGOSS建立成了一种标准,这个标准与实现他的技术相互独立。TMF还提供了一组测试方法,用于验证解决方案是...

2006-09-27 15:45:00 157

软件的灵活性来自哪里?

灵活的软件,可以更好的适应用户的需求。什么样的软件才是灵活的?一旦用户提出灵活性方面的需求,设计者经常想到的一个对策是:增加配置。在不同的业务环节上增加功能配置,哪里需要灵活性,就把配置写到哪里。配置为软件系统提供了无数个可能——这就是灵活性。但是配置经常复杂无比,失去控制。很多配置项目已经失去了业务意义,完全成为一种数学意义上的排列组合。按照一些配置的路线,业务无法形成闭环流程,走进死胡同。这样...

2006-06-21 13:57:00 761

存储过程——天使还是魔鬼

看了Heroman的一篇文章,谈论该不该在项目中使用存储过程代替SQL语句。看后有一些感想,因为最近工作接触到一个系统,业务过程几乎完全是用存储过程实现的。随着系统的不断发展,新的需求逐渐难以支持。这个原因当然很复杂,即使不使用存储过程,可能也有同样的问题。但是既然谈到具体技术上,就来看一下一个主要以存储过程实现的系统到底有哪些问题。存储过程和嵌入程序中的SQL哪个更好,要用一种合理的比较方式来比...

2006-01-11 23:20:00 78

应用软件的层次划分

谈到应用程序的层次,我们平时所说的层次有两种:逻辑的层次(layer)和部署的层次(tier)。这两种层次划分的目的是不同的,因此划分方式也有一些差异,能够为应用程序带来的好处也是不同的。逻辑层次逻辑层次(layer)划分的最重要的目的在于调整应用程序各部分之间的依赖关系。应用程序可以看作数据和业务规则的集合,这个集合通过用户界面与用户发生交互。如果不划分层次,或者只划分最简单的层次,系统的结构就...

2005-09-14 12:59:00 559

构想:Google桌面搜索、Delicious、知识管理

先介绍两个软件:Google桌面搜索和DeliciousGoogle桌面搜索Google搜索大家都熟悉,Google桌面搜索是Google搜索的桌面版本(请看http://desktop.google.com)。Google桌面搜索用于在用户硬盘上搜索文档、网页访问历史、电子邮件和IM聊天记录,是一个基于关键字的文档管理系统。普通的文档管理系统是基于目录的。我们经常有这样的烦恼:曾经看过一个文件,...

2005-08-15 12:38:00 152

设计和编写可复用的代码

刚开始干这一行的时候,对代码的复用有很高的热情。那时候总是希望自己写出的function、class、模块都是可以复用的,能够优美的解决所有问题。但是往往事于愿违,设计的变更、需求的变更、种种没有预料的情况最终把自己的代码摧毁的面目全非。有时一个简单的function会出现各种不同的版本,SendMessage、SendMessage2、SendMessageEx……在注释中说明其间微妙的区别。复...

2005-07-21 14:33:00 276

Keep It Simple and Stupid

Keep It Simple and Stupid, 就是KISS原则. 简单是软件设计之美, 简单的设计使得软件产品易于开发, 易于维护. 简单代表着高质量, 少加班, 每个人都希望自己的工作是简单的. 在KISS原则之外, 应该有一个更重要的原则: Useful. 满足需求是一切产品的低限. 也许需求本身也应该KISS, 简单的需求意味着底成本, 高效率. 可惜客户有时候很难克制自己的欲望....

2005-07-14 13:48:00 211

程序界面设计模式

现在开发应用程序经常使用一些所见即所得的开发环境,使得用户界面的制作非常方便。然而,用户界面是最容易发生需求变更的部分,用户界面发生变化,经常对业务模块产生影响。并且,用户界面是不利于自动测试的。一旦某些代码依赖用户界面,这样的代码就很难在别的模块中调用了,因此业务逻辑不能在界面层次中进行,否则会造成不能复用,不能复用自然会增加复制粘贴的代码,造成错误的扩散,放大需求变更的影响。在程序设计中,应该...

2005-05-14 12:50:00 194

实例——在编程过程中进行单元测试

这是一个真枪实弹的例子,如何在编程过程中进行单元测试。本文以一个图书馆的书籍管理系统作为例子,讲述一个单元测试——编码的循环过程。这里只讲述一个独立画面的编写。画面的编码分两个部分,业务数据部分和界面表示部分。先介绍业务数据部分的编写。下面具体的描述单元测试是如何融入到设计和编码的过程当中的,单元测试驱动着编码的过程,可以说,编码的目的就在于使单元测试能够通过。整个开发过程就象这样前进:测试——编...

2004-12-14 12:16:00 137

.NET实用设计模式:观察者模式(Observer)

介绍了观察者模式(Observer)的原理和实现。需要注意的一点:观察和通知不是简单的直接调用,要避免观察者和被观察者之间的耦合。 地址:http://www.cnblogs.com/lane_cn/articles/73240.html...

2004-12-05 22:51:00 81

.NET实用设计模式:命令模式——Command

介绍命令模式在实际工程中的应用,命令模式与其他模式的结合,实例说明引入命令模式带来的好处。地址:http://www.cnblogs.com/lane_cn/articles/71365.html

2004-12-01 10:24:00 67

.NET实用设计模式:工厂模式(Factory)

本文介绍了一种创建型设计模式:工厂模式(Factory),以及一个简单的C#实现的例子。地址:http://www.cnblogs.com/lane_cn/articles/70742.html

2004-11-30 00:27:00 90

.NET实用设计模式:组合模式(Composite)

简单的谈了一点组合模式的概念,在C#中的实现方式,举了一个简单的例子。全文地址:http://www.cnblogs.com/lane_cn/articles/70382.html

2004-11-29 13:07:00 201

原创 .NET中的设计模式五:观察者模式

观察者模式(Observer)完美的将观察者和被观察的对象分离开。举个例子,用户界面可以作为一个观察者,业务数据是被观察者,用户界面观察业务数据的变化,发现数据变化后,就显示在界面上。面向对象设计的一个原则是:系统中的每个类将重点放在某一个功能上,而不是其他方面。一个对象只做一件事情,并且将他做好。观察者模式在模块之间划定了清晰的界限,提高了应用程序的可维护性和重用性。观察者模式有很多实现方式

2004-11-20 01:20:00 1611

原创 .NET中的设计模式四:命令模式

 命令模式(Command)结构并不复杂,简单的说,就是将某些职责封装成对象,对象的激发者(Invoker)和接收者(Reciever)都不过问命令的执行过程。用这样的方式解除了激发者和接受者之间的耦合,为程序提供了更清晰的层次结构。实际运用中经常是将系统中的命令抽象成一个接口,所有的命令都是这个接口的实现,如下所示:Command类是ICommand的实现,Command类实现了exec

2004-11-11 12:33:00 1261

原创 怎样测试代码中难测试的部分

现在越来越多的开发组织在程序开发中使用单元测试的方式,甚至有些外包工程要求开发者交货的时候提供完整的单元测试代码。单元测试不仅仅是在编码的时候需要考虑,在程序设计的时候就应该充分考虑测试的需要,要设计和编写出“可测试”的代码。为什么一些代码难以测试在进行单元测试的时候,会发现程序中某些部分很难进行自动测试,比如耦合程度比较高的类、用户界面、数据库、Servlets和EJB类、等等。本文主要说明程序

2004-11-08 20:04:00 4409 2

原创 .NET中的设计模式三:组合模式

 组合模式(Composite)是一种“结构型”模式(Structural)。结构型模式涉及的对象为两个或两个以上,表示对象之间的活动,与对象的结构有关。先举一个组合模式的小小例子:如图:系统中有两种Box:Game Box和Internet Box,客户需要了解者两个类的接口分别进行调用。为了简化客户的工作,创建了XBox类,程序代码如下:GameBox的代码:

2004-11-05 18:34:00 1561 2

原创 在C#中使用代理的方式触发事件

 事件(event)是一个非常重要的概念,我们的程序时刻都在触发和接收着各种事件:鼠标点击事件,键盘事件,以及处理操作系统的各种事件。所谓事件就是由某个对象发出的消息。比如用户按下了某个按钮,某个文件发生了改变,socket上有数据到达。触发事件的对象称作发送者(sender),捕获事件并且做出响应的对象称作接收者(receiver),一个事件可以存在多个接受者。在异步机制中,事件是线程之

2004-11-04 14:07:00 19713 6

原创 .NET中的设计模式二:单件模式

单件模式(Singleton)是一个非常简单的模式,这是我第一个理解并且能运用的模式。有时候模式的复杂程度并不在于本身,而是由于他的应用目的。最初的时候面对一个模式经常充满了困惑,一个简单的调用为什么要搞的如此复杂?为什么要建立这么多类,只是为了打开一个文件。通常说来学习一个模式是一个接受、认可、领会的过程。接受:了解模式的结构,了解实例的意义;认可:认可该模式在实际工程中的作用和可行性;领会

2004-11-02 21:04:00 1721 4

原创 .NET中的设计模式一:工厂模式

 设计模式概述设计模式从本质上说是一种规则,从形式上说,分为创建型、结构型、行为型。设计模式的应用是为了实现软件设计中的几个原则,其中一个重要原则是:减少模块之间的耦合程度。为了确保这个目的,在设计一个类时,要针对接口,而非实现。(Programming to an Interface, not an Implementation)设计的时候只关心类的接口,编程的时候可以先实现一个简单的接

2004-11-02 18:50:00 1445

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除