软件设计

IO设计模式:Reactor和Proactor

基本概念 同步 vs. 异步 同步I/O 每个请求必须逐个地被处理,一个请求的处理会导致整个流程的暂时等待,这些事件无法并发地执行。用户线程发起I/O请求后需要等待或者轮询内核I/O操作完成后才能继续执行。 异步I/O 多个请求可以并发地执行,一个请求或者任务的执行不会导致整个流程的暂时等待。用户线程发起I/O请求后仍然继续执行,当内核I/O操作完成后会通知用户线程,或者调用用户线程注册的回调函数。 阻塞 vs. 非阻塞 阻塞某个请求发出后,由于该请求操作需要的条件不满足,请求操作一直阻塞,不会返回,直到条件满足。 非阻塞请求发出后,若该请求需要的条件不满足,则立即返回一个标志信息告知条件不满足,而不会一直等待。

软件设计

面向方面编程(Aspect Oriented Programming)

1. 概念 1.1 背景 面向过程编程问题 面向过程是一种自顶向下的编程方法,适用于小型软件系统,在大型应用系统中,自顶向下逐步求精的方法,在系统的进化和维护,以及软件重用性方面都存在其不足之处 面向对象编程问题 由于其良好的封装性,层次化性以及继承性,且对象模型很好映射到实际领域。但是在设计阶段,由于以类为单位组织建模,不能全面反映软件系统的需求;在编码阶段,将数据和方法封装到类中增强了数据的安全性和模块化,但减少了代码重用可能性;维护阶段,类中夹杂各种特定于应用的代码,难以理解和维护 1.2 AOP 将传统的按功能或按对象划分程序模块的方法转化为按系统特征划分程序模块,这是AOP基本思想,OOP引入封装、继承和多态性等概念来建立一种对象层次结构,允许定义从上到下的关系,

软件设计

设计模式Gof

目录 概念 设计模式原则 创建型模式 结构型模式 行为型模式 J2ee模式 庞杂的软件模式中,分为设计模式,分析模式,组织和过程模式,本文来分析设计模式,着重理解,具体定义可参考(菜鸟教程-设计模式) 1.概念 定义:模式是表示特定的情景,动机,解决方案三个方面关系的规则,每个模式描述了一个在某种特定情景下不断重复发生的问题,以及该问题解决方案的核心所在。模式既是一个事物又是一个过程,不仅描述该事物本身,而且提出了通过怎样的过程来产生该事物 作用:简化并加快设计,方便开发人员的通信,降低风险,有助于转到面向对象技术 特性:巧妙,

软件设计

RUP(Rational unified Process)

1 概念 RUP 统一软件过程一种用例驱动的,以架构为中心的,采用迭代增量方式开发的软件工程过程。它汲取了面向对象软件工程领域多年来的优秀研究成果,应用统一建模语言(UML)进行可视化建模,为面向对象的软件系统的开发提供了方法论的指导。 Unified Modeling Language 用图形方式描述一个系统的静态结构和动态行为的一种可视化的面向对象建模语言,从不同的角度为系统建模,形成了整个系统的不同视图,UML作为一种建模语言,要和具体的软件过程相结合。这就实现了UML与RUP相结合 软件过程 UML是一种可应用于软件开发的非常优秀的建模语言,但是UML本身并没有告诉人们怎样使用它,为了有效地使用UML,需要有一种方法应用于它,这就是软件过程。软件过程是为了获得客户所需要的软件,所进行的一系列任务及各个任务的工作步骤。常见的软件过程模型有瀑布模型、原型模型、增量模型、喷泉模型、RUP(

软件设计

UML

1. 基本元素 构造型(stereotype):代表模型元素集的关键字 继承指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力,用_实线空心三角头_表示泛化关系(子类指向父类) 实现指的是一个class类实现interface接口(可以是多个)的功能,用_虚线空心三角头_表示实现关系(实现类指向接口) 依赖就是一个类A使用到了另一个类B,而这种使用关系是具有偶然性的、临时性的、非常弱的,但是B类的变化会影响到A,用 _虚线箭头_表示依赖关系(依赖方指向被依赖)