UML+模式设计概述
转自于:http://blog.csdn.net/rexuefengye/article/details/13020225
工程学:工程庞大到一定程度必须是用工程学方法,好比直接用水泥沙子建设实用的摩天大厦是极其困难的。
标准类模型:这或许是AI实现的必经之路吧!类似于Java托管代码的实现方式...
UML软件工程组织:状态图与流程图
Uml图的使用入门:http://www.open-open.com/lib/view/open1328059700311.html 来自于http://www.open-open.com
画流程图需要注意的几个问题:http://developer.51cto.com/art/201007/209790.htm
详细解释各种图:http://www.cnblogs.com/jiqing9006/p/3344221.html
一、设计模式分类:
按照目的来分,设计模式可以分为创建型模式、结构型模式和行为型模式。(分类如下表)
- 创建型模式用来处理对象的创建过程;
- 结构型模式用来处理类或者对象的组合;
- 行为型模式用来对类或对象怎样交互和怎样分配职责进行描述。
表1-1
|
设计模式分类 |
说明 |
备注 |
|
|
创建型模式 |
(Factory Method Pattern) |
定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中。 |
|
|
(Abstract Factory Pattern) |
提供一个创建一系列相关或者相互依赖的接口,而无需指定它们具体的类。 |
||
|
(Builder Pattern) |
将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。 |
||
|
(Prototype Pattern) |
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 |
||
|
(Singleton Pattern) |
保证一个类仅有一个实例,并提供一个访问它的全局访问点。 |
||
|
结构型模式 |
(Adapter Pattern) |
将一个类的接口转换成客户希望的另外一个接口。使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 |
|
|
桥接模式(Bridge Pattern) |
将抽象部分与实际部分分离,使它们都可以独立的变化。 |
||
|
(Composite Pattern) |
将对象组合成树形结构以表示“部分--整体”的层次结构。使得用户对单个对象和组合对象的使用具有一致性。 |
||
|
(Decorator Pattern) |
动态的给一个对象添加一些额外的职责。就增加功能来说,此模式比生成子类更为灵活。 |
||
|
(Facade Pattern) |
为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 |
||
|
(Flyweight Pattern) |
以共享的方式高效的支持大量的细粒度的对象。 |
||
|
(Proxy Pattern) |
为其他对象提供一种代理以控制对这个对象的访问。 |
||
|
行为型模式 |
(Chain of Responsibility Pattern) |
在该模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求,这使得系统可以在不影响客户端的情况下动态地重新组织链和分配责任。 |
|
|
(Command Pattern) |
将一个请求封装为一个对象,从而使你可用不同的请求对客户端进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。 |
||
|
(Interpreter Pattern) |
描述了如何为简单的语言定义一个语法,如何在该语言中表示一个句子,以及如何解释这些句子。 |
||
|
(Iterator Pattern) |
提供了一种方法顺序来访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示。 |
||
|
(Mediator Pattern) |
定义一个中介对象来封装系列对象之间的交互。终结者使各个对象不需要显示的相互调用 ,从而使其耦合性松散,而且可以独立的改变他们之间的交互。 |
||
|
(Memento Pattern) |
在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。 |
||
|
(Observer Pattern) |
定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。 |
||
|
状态模式(State Pattern) |
允许一个对象在其内部状态改变时改变它的行为,使对象看起来似乎修改了它的类。 |
||
|
策略模式(Strategy Pattern) |
准备一组算法,并将每一个算法封装起来,使得它们可以互换。 |
||
|
(Template Method Pattern) |
使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 |
||
|
(Visitor Pattern) |
表示一个作用于某对象结构中的各元素的操作,它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 |
||
二、六大设计原则:
|
六大设计原则 |
说明 |
备注 |
|
SRP(单一职责原则) |
有且只有一个原因引起类的变更。 |
|
|
LSP(里氏替换原则) |
子类必须完全实现父类接口,在系统中完全可以用子类替换父类,即子类型必须能够替换它们的基类型。 |
|
|
DIP(依赖倒转原则) |
1. 高层模块不应该依赖于低层模块,二者都应该依赖于抽象。 2. 抽象不应该依赖于实现细节,实现细节应该依赖于抽象。 |
|
|
ISP(接口隔离原则) |
不能强迫用户去依赖那些他们不使用的接口。 |
|
|
LOD(迪米特原则) |
只和友元类交流,出现在成员变量,函数输入输出参数中的类,是朋友类。强调类之间的松散耦合。 |
|
|
OCP(开放-封闭原则) |
对扩展开放,对修改封闭。 |
UML+模式设计概述的更多相关文章
- 使用工厂方法模式设计能够实现包含加法(+)、减法(-)、乘法(*)、除法(/)四种运算的计算机程序,要求输入两个数和运算符,得到运算结果。要求使用相关的工具绘制UML类图并严格按照类图的设计编写程序实
2.使用工厂方法模式设计能够实现包含加法(+).减法(-).乘法(*).除法(/)四种运算的计算机程序,要求输入两个数和运算符,得到运算结果.要求使用相关的工具绘制UML类图并严格按照类图的设计编写程 ...
- 1、使用简单工厂模式设计能够实现包含加法(+)、减法(-)、乘法(*)、除法(/)四种运算的计算机程序,要求输入两个数和运算符,得到运算结果。要求使用相关的工具绘制UML类图并严格按照类图的设计编写程
1.使用简单工厂模式设计能够实现包含加法(+).减法(-).乘法(*).除法(/)四种运算的计算机程序,要求输入两个数和运算符,得到运算结果.要求使用相关的工具绘制UML类图并严格按照类图的设计编写程 ...
- OO_Unit4 UML模型化设计总结
OO_Unit4 UML模型化设计总结 任务简介:本单元在介绍了UML中几种基本的模型图元素的基础上,通过实现课程组提供的官方接口来完成自己的UML解析器. 架构设计 本单元最终的整体架构图如下(不包 ...
- 分享基于Entity Framework的Repository模式设计(附源码)
关于Repository模式,在这篇文章中有介绍,Entity Framework返回IEnumerable还是IQueryable? 这篇文章介绍的是使用Entity Framework实现的Rep ...
- php模式设计之 观察者模式
这是我写的<php模式设计>的第五篇.前面的四篇在不断学习不断加深认识,到了今天再看观察者模式,觉得非常容易理解.这也许就是我们积少成多的结果吧.希望还是能够不断进步. 开篇还是从名字说起 ...
- php模式设计之 适配器模式
在这个有没有对象都要高呼“面向对象”的年代,掌握面向对象会给我们带来意想不到的方便.学编程的小伙伴从开始能写几行代码实现简单功能到后来懂得将一些重复的操作组合起来形成一个“函数”,再到后来将“函数”和 ...
- php模式设计之 注册树模式
在前两篇单例模式和工厂模式后,终于迎来了最后一个基础的设计模式--注册树模式. 什么是注册树模式? 注册树模式当然也叫注册模式,注册器模式.之所以我在这里矫情一下它的名称,是因为我感觉注册树这个名称更 ...
- php模式设计之 工厂模式
承接上篇php模式设计之 单例模式,(虽然好像关系不大).今天讲述第二种基础的模式设计——工厂模式. 那么何为工厂模式? 从名字来看,似乎看不出什么端倪.工厂模式,和生产有关?还是和生产流程有关?难道 ...
- php模式设计之 单例模式
模式设计是什么?初学者一开始会被这高大上的名称给唬住.而对于有丰富编程经验的老鸟来说,模式设计又是无处不在.很多接触的框架就是基于各种模式设计形成的. 简单说,在写代码的过程中一开始往往接触的是面向过 ...
随机推荐
- [系统资源攻略]IO第一篇-磁盘IO,内核IO概念
几个基本的概念 在研究磁盘性能之前我们必须先了解磁盘的结构,以及工作原理.不过在这里就不再重复说明了,关系硬盘结构和工作原理的信息可以参考维基百科上面的相关词条--Hard disk drive(英文 ...
- [luogu1073 Noip2009] 最优贸易 (dp || SPFA+分层图)
传送门 Description C 国有n 个大城市和m 条道路,每条道路连接这n 个城市中的某两个城市.任意两个 城市之间最多只有一条道路直接相连.这m 条道路中有一部分为单向通行的道路,一部分 为 ...
- Python语言简介
一.Python语言发展史 1989年吉多·范罗苏姆(Guido van Rossum)中文外号“龟叔”,圣诞节期间开始编写Python语言的编译器. Python这个名字,来自Guido所挚爱的电视 ...
- 《团队名称》第八次团队作业:Alpha冲刺
项目 内容 这个作业属于哪个课程 任课教师博客主页链接 这个作业的要求在哪里 作业链接地址 团队名称 代码敲不队 作业学习目标 (1)掌握软件测试基础技术(2)学习迭代式增量软件开发过程(Scrum) ...
- 【ACM】hdu_zs1_1001_水仙花数_201307271504
水仙花数 Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other)Total Submissio ...
- C#--线程池与线程的种类
.NET CLR线程的种类 至少3个线程:主线程.调试线程.终结器线程 1.main thread 2.worker thread 3.finalizer thread 4.debugger help ...
- [bzoj5118]Fib数列2_费马小定理_矩阵乘法
Fib数列2 bzoj-5118 题目大意:求Fib($2^n$). 注释:$1\le n\le 10^{15}$. 想法:开始一看觉得一定是道神题,多好的题面啊?结果...妈的,模数是质数,费马小定 ...
- 学习日记之原型模式和Effective C++
原型模式(Prototype):用原型实例制定创建对象的种类,而且听过拷贝这些原型创建新的对象. 浅复制:假设字段是值类型的,则对该字段运行逐位复制.假设字段是引用类型.则复制引用但不复制引用的对象. ...
- Linux 管道是什么 ?原理
简单点就是说,一个命令的结果作为另外一个命令(结果)的输入 . 管道是linux提供的一种常见的进程通信工具,也是很多shell命令能够灵活组合产生强大用途的一个重要工具. 管道是什么? 管道,顾名思 ...
- Flex布局 Flexbox属性具体解释
原文:A Visual Guide to CSS3 Flexbox Properties Flex布局官方称为CSS Flexble Box布局模型是CSS3为了提高元素在容器中的对齐.方向.顺序,甚 ...