摘要: 1.王滔谈软件架构师和程序员的区别 http://www.cnblogs.com/wangtao_20/p/3242987.html好的程序员做不出好的软件设计本文由“外刊IT评论”网(http://www.aqee.net/)荣誉出品你不能看到一个程序员还不错,就把他推到系统分析师、软件设计师或软... 阅读全文
posted @ 2014-08-03 16:14 二郎那个三郎 阅读(399) 评论(0) 推荐(0)
摘要: 现在是二月,而且到如今你或许已经读到、或听到人们谈论UML 2.0 —— 包括若干进步的 UML 的新规范,所做的变化。考虑到新规范的重要性,我们也正在修改这个文章系列的基础,把我们的注意力从 OMG 的 UML 1.4 规范,转移到 OMG 的已采纳 UML 2.0草案规范(又名 UML 2)。我... 阅读全文
posted @ 2014-08-03 13:57 二郎那个三郎 阅读(1703) 评论(0) 推荐(0)
摘要: 状态图目录:一、状态图简介(Brief introduction)二、状态图元素(State Diagram Elements)1、状态(States)2、转移(Transitions)3、动作(State Actions)4、自身转移(Self-Transitions)5、组合状态(Compoun... 阅读全文
posted @ 2014-08-03 13:55 二郎那个三郎 阅读(956) 评论(0) 推荐(0)
摘要: 一、活动图的组成元素Activity Diagram Element1、活动状态图(Activity)2、动作状态(Actions)3、动作状态约束(Action Constraints)4、动作流(Control Flow)5、开始节点(Initial Node)6、终止节点(Final Node... 阅读全文
posted @ 2014-08-03 13:54 二郎那个三郎 阅读(557) 评论(0) 推荐(0)
摘要: 用例图主要用来描述“用户、需求、系统功能单元”之间的关系。它展示了一个外部用户能够观察到的系统功能模型图。 【用途】:帮助开发团队以一种可视化的方式理解系统的功能需求。 用例图所包含的元素如下: 1.参与者(Actor) 表示与您的应用程序或系统进行交互的用户、组织或外部系统。用一个小人表示... 阅读全文
posted @ 2014-08-03 13:52 二郎那个三郎 阅读(236) 评论(0) 推荐(0)
摘要: 1.概述在软件开发过程中,对于系统中的某些对象,它们存储在同一个集合collection中,且具有不同的类型,而且对于该集合中的对象,可以接受一类称为访问者的对象来访问,而且不同的访问者其访问方式有所不同。例子1:顾客在超市中将选择的商品,如苹果、图书等放在购物车中,然后到收银员处付款。在购物过程中... 阅读全文
posted @ 2014-08-03 11:05 二郎那个三郎 阅读(3914) 评论(0) 推荐(1)
摘要: 1.概述在软件开发过程中,应用程序可能会根据不同的情况作出不同的处理。最直接的解决方案是将这些所有可能发生的情况全都考虑到。然后使用if... ellse语句来做状态判断来进行不同情况的处理。但是对复杂状态的判断就显得“力不从心了”。随着增加新的状态或者修改一个状体(if else(或switch ... 阅读全文
posted @ 2014-08-03 10:56 二郎那个三郎 阅读(324) 评论(0) 推荐(0)
摘要: 1.概述一些面向对象的编程方式,提供了一种构建对象间复杂网络互连的能力。当对象们连接在一起时,它们就可以相互提供服务和信息。通常来说,当某个对象的状态发生改变时,你仍然需要对象之间能互相通信。但是出于各种原因,你也许并不愿意因为代码环境的改变而对代码做大的修改。也许,你只想根据你的具体应用环境而改进... 阅读全文
posted @ 2014-08-03 10:53 二郎那个三郎 阅读(317) 评论(0) 推荐(0)
摘要: 1.概述在面向对象的软件设计与开发过程中,根据“单一职责原则”,我们应该尽量将对象细化,使其只负责或呈现单一的职责,即将行为分布到各个对象中。对于一个模块或者系统,可能由很多对象构成,而且这些对象之间可能存在相互的引用,在最坏的情况下,每一个对象都知道其他所有的对象,这无疑复杂化了对象之间的联系。虽... 阅读全文
posted @ 2014-08-03 10:51 二郎那个三郎 阅读(268) 评论(0) 推荐(0)
摘要: 1.概述类中的面向对象编程封装应用逻辑。类,就是实例化的对象,每个单独的对象都有一个特定的身份和状态。单独的对象是一种组织代码的有用方法,但通常你会处理一组对象或者集合。集合不一定是均一的。图形用户界面框架中的 Window 对象可以收集任意数量的控制对象 - Menu、Slider 和 Butto... 阅读全文
posted @ 2014-08-03 10:48 二郎那个三郎 阅读(239) 评论(0) 推荐(0)
摘要: 1.概述 在软件设计中,我们经常需要向某些对象发送请求,但是并不知道请求的接收者是谁,也不知道被请求的操作是哪个,我们只需在程序运行时指定具体的请求接收者即可,此时,可以使用命令模式来进行设计,使得请求发送者与请求接收者消除彼此之间的耦合,让对象之间的调用关系更加灵活。例子1:电视机遥控器 :... 阅读全文
posted @ 2014-08-03 10:46 二郎那个三郎 阅读(327) 评论(0) 推荐(0)
摘要: 说明:相对于其它模式,Flyweight模式在PHP实现似乎没有太大的意义,因为PHP的生命周期就在一个请求,请求执行完了,php占用的资源都被释放。我们只是为了学习而简单做了介绍。1. 概述面向对象技术可以很好地解决系统一些灵活性或可扩展性或抽象性的问题,但在很多情况下需要在系统中增加类和对象的个... 阅读全文
posted @ 2014-08-03 10:17 二郎那个三郎 阅读(192) 评论(0) 推荐(0)
摘要: 1. 概述 外观模式,我们通过外观的包装,使应用程序只能看到外观对象,而不会看到具体的细节对象,这样无疑会降低应用程序的复杂度,并且提高了程序的可维护性。例子1:一个电源总开关可以控制四盏灯、一个风扇、一台空调和一台电视机的启动和关闭。该电源总开关可以同时控制上述所有电器设备,电源总开关即为该系统... 阅读全文
posted @ 2014-08-03 10:14 二郎那个三郎 阅读(276) 评论(0) 推荐(0)
摘要: 1. 概述 若你从事过面向对象开发,实现给一个类或对象增加行为,使用继承机制,这是所有面向对象语言的一个基本特性。如果已经存在的一个类缺少某些方法,或者须要给方法添加更多的功能(魅力),你也许会仅仅继承这个类来产生一个新类—这建立在额外的代码上。 通过继承一个现有类可以使得子类在拥有自身方法的... 阅读全文
posted @ 2014-08-03 10:05 二郎那个三郎 阅读(248) 评论(0) 推荐(0)
摘要: 1. 概述在数据结构里面,树结构是很重要,我们可以把树的结构应用到设计模式里面。例子1:就是多级树形菜单。例子2:文件和文件夹目录2.问题我们可以使用简单的对象组合成复杂的对象,而这个复杂对象有可以组合成更大的对象。我们可以把简单这些对象定义成类,然后定义一些容器类来存储这些简单对象。客户端代码必须... 阅读全文
posted @ 2014-08-03 09:47 二郎那个三郎 阅读(265) 评论(0) 推荐(0)
摘要: 1. 概述 在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?如何利用面向对象的技术来使得该类型能够轻松的沿着多个方向进行变化,而又不引入额外的复杂度?例子1:设想如果要绘制矩形、圆形、椭圆、正方形,我们至少需要4个形状类,但是如果绘制的图形需要具... 阅读全文
posted @ 2014-08-03 09:28 二郎那个三郎 阅读(398) 评论(0) 推荐(0)
摘要: 1. 概述:接口的改变,是一个需要程序员们必须(虽然很不情愿)接受和处理的普遍问题。程序提供者们修改他们的代码;系统库被修正;各种程序语言以及相关库的发展和进化。 例子1:iphone4,你即可以使用UBS接口连接电脑来充电,假如只有iphone没有电脑,怎么办呢?苹果提供了iphone电源适配... 阅读全文
posted @ 2014-08-03 09:11 二郎那个三郎 阅读(235) 评论(0) 推荐(0)
摘要: 在画类图的时候,理清类和类之间的关系是重点。类的关系有泛化(Generalization)、实现(Realization)、依赖(Dependency)和关联(Association)。其中关联又分为一般关联关系和聚合关系(Aggregation),合成关系(Composition)。下面我们结合实... 阅读全文
posted @ 2014-08-03 08:44 二郎那个三郎 阅读(223) 评论(0) 推荐(0)