设计模式程序开发课件

上传人:L** 文档编号:21940847 上传时间:2017-09-25 格式:PPTX 页数:46 大小:1.25MB
返回 下载 相关 举报
设计模式程序开发课件_第1页
第1页 / 共46页
设计模式程序开发课件_第2页
第2页 / 共46页
设计模式程序开发课件_第3页
第3页 / 共46页
设计模式程序开发课件_第4页
第4页 / 共46页
设计模式程序开发课件_第5页
第5页 / 共46页
点击查看更多>>
资源描述

《设计模式程序开发课件》由会员分享,可在线阅读,更多相关《设计模式程序开发课件(46页珍藏版)》请在金锄头文库上搜索。

1、我们讨论的设计模式,设计模式与面向对象的关系,面向对象设计的模式什么是面向对象设计什么是模式,“学习”设计模式有用吗?,直接学习,设计模式,一个栗子,iServer服务发布向导,如何实现?,if(第一步)thenif(第二步)thenif(第三步)thenIf(第四步并且选择了xx服务)then这样?,你猜对了!?,你猜对了!?,你猜对了!?,你猜对了!?,你猜对了!?,学挖掘机到底哪家强?,首先,程序猿吧,没对象吧,你们程序猿可以自己new 一个,找对象那么容易?,用面向对象原则分析,开闭原则修改封闭,扩展开放。分离变化的和不变的。变化的是什么不变的是什么怎么分离,不变的部分,变化的部分,变

2、化的部分,找对象的常见错误,直接翻译先入为主忽略异常,找对象的常见错误,直接翻译先入为主忽略异常,找对象的常见错误,直接翻译先入为主忽略异常,强调一下我的观点,设计模式本身是不复杂的使用设计模式,是要有对象的找对象,是要用心分析业务逻辑的,http:/ iPSE Java开发,CAS登录和QQ登录的过程几乎是一样的iServer自己实现的QQ登录VSshiro自己扩展实现的CAS登录,For 其他Java Web开发,shiro-web和shiro-core什么关系如果不使用shiro-web只使用shiro-core如何实现web应用安全你的代码与shiro-web相比有哪些不足,http:

3、/shiro.apache.org/,设计模式与面向对象有关系吗?,设计模式,是针对特定问题使用面向对象设计原则对业务逻辑进行抽象的参考。,学面向对象有用吗,如果面向对象有用还要软件工程干啥,业务逻辑中的魔鬼,class XXXComponent void setConfigDirectory(String path);,业务逻辑中的魔鬼,请输入xx路径:,浏览,这多简单,就是读取配置显示出来,输入配置保存嘛。搞个界面按照产品经理的要求把风格调好看点,还搞个浏览按钮让用户直接选择不用手动输入路径真贴心,用户体验好。获取之前保存的目录显示在界面上。接受用户输入的值,检查下正确性保存用户输入的值调

4、用XXXComponent .setConfigDirectory代码好简单了,2小时搞定,就是调界面上的css可能要费点时间,./config/XXdir,业务逻辑中的魔鬼,产品经理:界面上显示的相对目录,用户不知道绝对路径,要在界面上显示绝对路径。某程序猿:简单,把系统配置根目录传到前端,在前端拼接下字符串就ok了,业务逻辑中的魔鬼,产品经理:有用户觉得显示绝对路径不安全,需要增加一个securityPath配置,如果设置为true,绝对路径也要显示成先对路径,或者隐藏只显示一部分。某程序猿:简单,读取配置后根据securityPath的设置转换一下路径。,业务逻辑中的魔鬼,产品经理:XX

5、XComponent需要支持从数据库读取配置某程序猿:简单,数据库连接字符串里有特殊符号,在XXXComponent .setConfigDirectory里判断一下,如果是数据库连接字符串就从数据库读。,业务逻辑中的魔鬼,产品经理:用户修改了配置之后要把原来保存的数据迁移到新的位置某程序猿:简单,在XXXComponent .setConfigDirectory里,魔鬼养成!,某程序员:WhatFuck!这一堆代码都是干啥的配置相关逻辑分散得到处都是还前后端都有!XXXComponent为什么要负责读取配置,还分别读取数据库的和文件型的。说好的单职原则了!,面向对象能阻止这个魔鬼吗?设计模式

6、能阻止这个魔鬼吗?离了业务逻辑谈设计,都是扯淡。,Visitor模式,专治else if强迫症If(geometry instanceOf GeometryA) . else if (geometry instanceOf GeometryB) else if(geometry instanceOf GeometryC) else ,Visitor模式,Interface GeometryVisitor void visit(GeometryA geo);void visit(GeometryB geo);void visit(GeometryC geo);class Geometry abs

7、tract void accept(GeometryVisitory visitor);,Visitor模式,class GeometryA extends Geometryvoid accept(GeometryVisitor visitor) visitor.visit(this); class GeometryB extends Geometry void accept(GeometryVisitor visitor) visitor.visit(this);,Visitor模式,class MyVisitor implements GeometryVisitor public void visit(GeometryA geo) ;public void visit(GeometryB geo) ;public void visit(GeometryC geo) ;,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 毕业论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号