
设计模式
haizhongyun
“守法”转载
展开
-
分析、设计的关系及uml中类图的两种存在形式
摘要 本文通过对一个“学生选课系统”示例的简要分析与设计,说明UML图之一类图的两种作用及存在形式,以期借此澄清有些朋友可能对类图存在的误解与困惑。前言 在OOA与OOD大行其道的今天,UML在系统分析与设计中得到了广泛的采用。而在UML的9种图中,类图是最重要也是使用最普遍的图之一。但是,在与一些朋友,特别是初学者的聊天当中,我发现很多朋友对类图的作用及使用方转载 2012-04-24 22:35:53 · 2673 阅读 · 0 评论 -
目前最经典的关于虚函数的解释整理
自己也曾经被这些东西所困惑过,看见这篇文章写的不错,转载了过来,希望能给同样的迷茫中的人一点线索,仅供参考!(唯一不足之处就是应该把内存示意图贴出来就好多了,有时间我补上)[1]C++ 对象模型基础一个类中可以包含静态数据成员、静态成员函数、非静态成员函数和非静态数据成员以及虚函数。其中,前三者(静态数据成员、静态成员函数、非静态成员函数)都并没有被放到对象的布局中,可以从以下两段代码转载 2012-05-26 10:24:42 · 648 阅读 · 0 评论 -
消息的同步发送,异步发送以及消息发送的可靠性
最近写的一个通信框架中有两种最基本的消息发送方式:同步发送和异步发送。同步方式:消息的发送方发A送一条消息到接收端B,B收到消息之后需要对消息进行处理,然后发送ACK确认消息回A,A收到B的ACK之后就可以认为这条消息发送成功,并且保证B顺利收到并处理,在A收到ACK之前A将一直处于阻塞等待状态。异步方式:可细分成发送线程和接受线程异步,发送端进程和转载 2012-05-22 17:40:22 · 1902 阅读 · 0 评论 -
主动对象(ZT)
2009-04-08 16:21 933人阅读 评论(0)收藏 举报原标题:Active Object -An Object Behavioral Pattern for Concurrent Programming源文地址:http://www.cs.wustl.edu/~schmidt/PDF/Act-Obj.pdf译者:cuichaox@gmail.com转载 2012-05-22 18:22:10 · 942 阅读 · 0 评论 -
UML 的构成
当前我们所使用的UML一般都为UML1.4,最新的UML为2.0 UML有三大基本构造块,包括事物(元素)、关系以及图事物包括:(1)结构事物:类、接口、用例、协作等(2)行为事物:协作、状态机(3)分组事物:包(4)注释事物:注释包关系分为:联系、泛化(相当于继承)、依赖、实现按照UML1.4图总共有九种:用例图:用于描述系统的功能以及操作者转载 2012-05-22 18:06:50 · 553 阅读 · 0 评论 -
同步与异步
操作系统发展到今天已经十分精巧,线程就是其中一个杰作。操作系统把 CPU 处理时间划分成许多短暂时间片,在时间 T1 执行一个线程的指令,到时间 T2 又执行下一线程的指令,各线程轮流执行,结果好象是所有线程在并肩前进。这样,编程时可以创建多个线程,在同一期间执行,各线程可以“并行”完成不同的任务。 在单线程方式下,计算机是一台严格意义上的冯·诺依曼式机器,一段代码调用另一段代码转载 2012-05-22 17:45:29 · 328 阅读 · 0 评论 -
同步方式的消息发送和异步方式的消息发送
通信有两类不同的基本方式: 具有依时性的同步方式以及与时间无关的异步方式。消息传送中间件有许多不同类型, 它们分别都能够支持一类基本方式的消息通信, 有时可以支持两类方式。根据定义, 同步执行的特征为: 在两个通信应用系统之间必须要进行同步, 两个系统必须都在正常运行, 并且会中断客户端的执行流, 转而执行调用。发送程序和接收程序都必须一直做好相互通信的准备。发送程序首先向接收程序发起一个转载 2012-05-22 17:29:49 · 975 阅读 · 0 评论 -
关于对象之间通信的一点思考
1. 经典的DDD的告诉我们如果一个领域概念是一个跨多个聚合的动作,比如转帐,那么就应该用领域服务来实现这样的业务概念。领域服务的输入和输出参数都是聚合根,领域服务内部按照业务逻辑规定的执行顺序,按照面向过程的方式,逐个调用相关聚合根的相关方法完成整个业务操作。这种方式的优点是:1)清晰的表达和封装了业务逻辑;2)代码清晰,容易理解,代码可读性强;缺点:1)基本的OO思想告诉我们,对象与对象之间应转载 2012-05-22 17:18:25 · 647 阅读 · 0 评论 -
面向对象设计五大原则
在写设计模式读书笔记之前,我想先总结一下自己对于面向对象设计五大原则的理解,他们分别是:SRP——单一职责原则;OCP——开放封闭原则;LSP——Liskov替换原则;DIP——依赖倒置原则;ISP——接口隔离原则。 1. 单一职责原则 在《敏捷软件开发》中,把“职责”定义为“变化的原因”,也就是说,就一个类而言,应该只有一个引起它变化的原因。 在《UML与模式应用》一书转载 2012-05-22 09:41:24 · 587 阅读 · 0 评论 -
互斥对象 Mutex 和MFC中的CMutex
互斥(Mutex)是一种用途非常广泛的内核对象。能够保证多个线程对同一共享资源的互斥访问。同临界区有些类似,只有拥有互斥对象的线程才具有访问资源的权限,由于互斥对象只有一个,因此就决定了任何情况下此共享资源都不会同时被多个线程所访问。当前占据资源的线程在任务处理完后应将拥有的互斥对象交出,以便其他线程在获得后得以访问资源。与其他几种内核对象不同,互斥对象在操作系统中拥有特殊代码,并由操作系统来管理转载 2012-05-27 00:10:02 · 11676 阅读 · 0 评论 -
状态模式
状态模式 状态模式:允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。 要点: 1. 策略模式和状态模式是双胞胎,它们有相同的类图,但是它们的意图不同。策略模式是围绕可以互换的算法来成功创建业务的,然而状态模式是通过改变对象内部的状态来帮助对象控制自己的行为.2. Context将与状态相关的操作委托给当前的Concrete State对象处理。 3.转载 2012-04-21 23:01:56 · 542 阅读 · 0 评论 -
如何结束线程运行
在一些应用程序中,除非用户去结束应用程序的运行,否则其中的子线程会一直处于运行状态。如果应用程序在结束时不主动通知子线程退出,有可能导致主线程结束后,子线程的系统资源得不到释放。如何通知子线程结束运行呢?这需要在程序设计阶段就考虑到,通常可以用事件、消息或全局变量来通知子线程退出运行循环或消息循环。消息通知方式适合用来通知有消息循环的用户界面线程退出,但理论上讲消息机制是不可靠的(消息可能会丢失,转载 2012-05-26 23:19:29 · 903 阅读 · 0 评论