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模式设计之 单例模式
模式设计是什么?初学者一开始会被这高大上的名称给唬住.而对于有丰富编程经验的老鸟来说,模式设计又是无处不在.很多接触的框架就是基于各种模式设计形成的. 简单说,在写代码的过程中一开始往往接触的是面向过 ...
随机推荐
- 数据类型 scanf标准函数 sizeof关键字 二进制(day03)
字符类型的名称是char 字符类型里包含256个不同的整数,每个 整数对应一个字符(例如'a', '^'等) 这些整数和字符完全可以互相替代 ASCII码表列出所有整数和字符的对应关系 ASCII码表 ...
- idea整合eclipse后快捷键
- Maven学习总结(26)——maven update时,报:Preference node "org.eclipse.wst.validation"...
详细情况如下: An internal error occurred during: "Updating Maven Project". Preference node " ...
- css sprites拼合
一.什么是css sprites css sprites直译过来就是CSS精灵.通常被解释为“CSS图像拼合”或“CSS贴图定位”.就是把网页中一些背景图片整合拼合成一张图片中,再利用DIV CSS的 ...
- 0912MySQL 执行计划explain详解
转自http://blog.itpub.net/29773961/viewspace-1767044/ 该博客内容是比较全的,虽然写的比较晦涩,多读几遍还是不错的 explain命令是查看查询优化器如 ...
- mongodb--find高级用法
链式查询 db.person.find().limit(4).sort({sex:-1}) // sort来说,1 是升序, -1 是降序 尽量不要用mongodb去做一些复杂的运算 分页的写法 ·· ...
- COCOS2D-X暂时设置竖屏,过一阵子再设置回横屏
mainActivity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);//竖屏 竖屏是JAVA代码 另外再改动C ...
- 《Android源代码设计模式解析与实战》读书笔记(八)
第八章.状态模式 1.定义 状态模式中的行为是由状态来决定,不同的状态下有不同的行为.当一个对象的内在状态改变时同意改变其行为,这个对象看起来像是改变了其类. 2.使用场景 1.一个对象的行为取决于它 ...
- maven+springMVC+mybatis+easyUI管理用户增删改查
1.项目演示图 2.项目简单介绍 项目分为两个projectdomain和manager.project结构例如以下图所看到的.当中domain是Maven javaproject主要完毕对数据库的操 ...
- 1、应用设置之TAB页
转载请注明出处:http://blog.csdn.net/droyon/article/details/39891257 应用设置的TAB页,共分6页.如图 ...