UML-GRASP后4种模式
1、多态
1)、什么是多态
问题:if-else耦合度过高
解决:
方法1:接口
方法2:超类里需多态的方法前加上{abstract}
2)、相关模式
防止异变
大量GoF,如适配器(Adapter)、命令(Commond)、组合(Composite)、代理(Proxy)、状态(State)、策略(Strategy)模式
2、纯虚构
1)、什么是纯虚构?
举个例子:在数据库中保存Sale对象。根据信息专家模式可将保存Sale对象的职责分配给Sale自身,这将导致Sale中耦合了JDBC代码,与本身的职责“销售”不符了,此时,我们可以虚构一个对象,该对象专门处理数据库操作,如叫做PersistentStorage。该对象不存在概念模型中的。
纯虚构:当我们穷途末路时所捏造的某物
2)、相关模式
低耦合
高内聚
纯虚构通常接纳本来是专家模式所分配给该领域的职责
所有GoF设计模式都是纯虚构
3、间接性
1)、什么是间接性?
举个例子:

代付/收单系统分别需要写一遍连接建行/工行的代码,一是麻烦,二是银行接口变动时,代付/收单都要改。
而如果中间加一层:

只需要在适配器中对接银行,一旦接口变动也只需要更改适配器即可。
间接性-->纯虚构-->低耦合
2)、相关模式
适配器(Adapter)
桥(Bridge)
外观(Facade)
观察者(Observer)
中介(Mediator)
4、防止异变
1)、什么叫防止异变?
设计时,尽可能的减少因为变化带来的代码变更或较大变更。
2)、如何防止异变?
A、数据封装、接口、多态、间接性、标准(都是源于防止异变[PV]的)
B、数据驱动设计
C、服务查询:JNDI、webservice的UDDI
D、解释器驱动设计:读取外部配置文件、执行外部脚本。。。
E、反射(Method.invoke)或Meta-Level 设计
F、标准语言:如SQL
G、LSP:采用对接口的不同实现或扩展超类的子类防止异变。如下图:

无论传递任何ITaxCalculatorAdapter的实现类,该方法都应该“按照预期”工作。
再如:a.getB().getC().getD(),一旦迭代,随时会变更代码。可以获取其他对象,但是,不要太深,一般1级,即:a.getB()。
3)、相关模式或原则
多态、接口、间接性、数据封装
大部分的GoF模式
进入《GRASP前5种模式》
UML-GRASP后4种模式的更多相关文章
- 仿今日头条最强顶部导航指示器,支持6种模式-b
项目中经常会用到类似今日头条中顶部的导航指示器,我也经常用一个类似的库PagerSlidingTabStrip,但是有时并不能小伙伴们的所有需求,所以我在这个类的基础上就所有能用到的情况做了一个简单的 ...
- UML总结4---UML九种图关系说明
转自:http://blog.csdn.NET/chenyujing1234/article/details/8173519 UML中包括九种图:用例图.类图.对象图.状态图.时序图.协作图.活动图. ...
- GRASP软件设计的模式和原则
GRASP 模式:每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心.”这是关于模式最经典的定义,作者是建筑大师Christopher Alexander.如果是第一次看到这 ...
- javascript面向对象系列第二篇——创建对象的5种模式
× 目录 [1]字面量 [2]工厂模式 [3]构造函数[4]原型模式[5]组合模式 前面的话 如何创建对象,或者说如何更优雅的创建对象,一直是一个津津乐道的话题.本文将从最简单的创建对象的方式入手,逐 ...
- javascript创建对象的几种模式
在js中有几种模式可以创建对象,通过对象操作所包含的属性与方法. 一般来说,构造函数名称的第一个字母为大写字母,非构造函数名称的第一个字母为小写字母,当然,构造函数与一般函数唯一的区别只是调用的方式不 ...
- SQL Server 2012复制教程以及复制的几种模式
简介 SQL Server中的复制(Replication)是SQL Server高可用性的核心功能之一,在我看来,复制指的并不仅仅是一项技术,而是一些列技术的集合,包括从存储转发数据到同步数据到维护 ...
- Windows2003 IIS6.0支持32位和64位两种模式的设置方法
IIS 6.0 可支持 32 位和 64 位两种模式.但是,IIS 6.0 不支持在 64 位版本的 Windows 上同时运行这两种模式.ASP.NET 1.1 只在 32 位模式下运行.而 ASP ...
- (转)深度分析Linux下双网卡绑定七种模式
现在一般的企业都会 使用双网卡接入,这样既能添加网络带宽,同时又能做相应的冗余,可以说是好处多多.而一般企业都会使用linux操作系统下自带的网卡绑定模式,当然现在 网卡产商也会出一些针对window ...
- 高可用与负载均衡(6)之聊聊LVS的三种模式
LVS的赘述 IPVS,ipvs ,ip_vs是负载均衡器中的内核代码 LVS是完整的负载均衡器+后端服务器.这些组件组成了虚拟服务器. LVS是一个4层负载均衡方案,标准的客户端-服务器网络语义也被 ...
随机推荐
- 吴裕雄 Bootstrap 前端框架开发——Bootstrap 字体图标(Glyphicons):glyphicon glyphicon-repeat
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...
- python基础数据类型--元组(tuple)
python基础数据类型--元组(tuple) 一.元组的定义和特性 定义:与列表相似,只不过就是将[ ] 改成 ( ) 特性:1.可以存放多个值 2.不可变 3.按照从左到右的顺序定义元组元素,下标 ...
- PHP计划任务
server 2008:D:\SOFT_PHP_PACKAGE\php\php-cgi.exe -f D:\wwwroot\tlbuyuncom\wwwroot\Up_Data.phpPHP路径 -f ...
- POJ2392:Space Elevator
Space Elevator Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9244 Accepted: 4388 De ...
- springcloud--ruul(路由网关)
Zuul的主要功能就是路由转发和过滤器 实例: 1:添加依赖pom.xml: <dependencies> <dependency> <groupId>org.sp ...
- ROS大型工程学习(二) 怎么阅读大型工程
基本思路是由点到面,由浅到深. 1.首先从launch文件入手. 文件中会看到比如: <node ns="> <rosparam command="load&qu ...
- 小程序开发顶部TAB栏和侧边分类点击
先上一个效果图: 根据这个效果图我来说内容. 首先是顶部tab栏 效果实现依靠的是一个组件scroll-view.这个组件很有意思,可以多层嵌套,当然它的属性也很多. 这里主要用的是scroll-x, ...
- [NOIP2017] T4 跳房子 DP+二分
Description 跳房子,也叫跳飞机,是一种世界性的儿童游戏,也是中国民间传统的体育游戏之一.跳房子的游戏规则如下: 在地面上确定一个起点,然后在起点右侧画 n 个格子,这些格子都在同一条直线 ...
- 留学Essay写作常见谬误盘点
留学生在完成英语论文作业的时候总会出现各种各样的谬误,导致最后拿不到高分,甚至挂科,最终只得选择写作完成.本文小编为大家总结出我们留学生在essay写作中几个常见谬误,希望大家有则改之,无则加勉. E ...
- wget 403 forbidden
CMD: wget --user-agent="Mozilla" down_url wget -U Mozilla 下载地址 wget -U NoSuchBrowser/1.0 下 ...