设计模式程序开发课件_第1页
设计模式程序开发课件_第2页
设计模式程序开发课件_第3页
设计模式程序开发课件_第4页
设计模式程序开发课件_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

我们讨论的设计模式,设计模式与面向对象的关系,面向对象设计的模式什么是面向对象设计什么是模式,“学习”设计模式有用吗?,直接学习,设计模式,一个栗子,iServer服务发布向导,如何实现?,if(第一步)thenif(第二步)thenif(第三步)thenIf(第四步并且选择了xx服务)then这样?,你猜对了!?,你猜对了!?,你猜对了!?,你猜对了!?,你猜对了!?,学挖掘机到底哪家强?,首先,程序猿吧,没对象吧,你们程序猿可以自己new 一个,找对象那么容易?,用面向对象原则分析,开闭原则修改封闭,扩展开放。分离变化的和不变的。变化的是什么不变的是什么怎么分离,不变的部分,变化的部分,变化的部分,找对象的常见错误,直接翻译先入为主忽略异常,找对象的常见错误,直接翻译先入为主忽略异常,找对象的常见错误,直接翻译先入为主忽略异常,强调一下我的观点,设计模式本身是不复杂的使用设计模式,是要有对象的找对象,是要用心分析业务逻辑的,/subject/2243615/iServer入伙必看(By胡中南)/doulist/966411/?qq-pf-to=pcqq.discussion,For iPSE Java开发,CAS登录和QQ登录的过程几乎是一样的iServer自己实现的QQ登录VSshiro自己扩展实现的CAS登录,For 其他Java Web开发,shiro-web和shiro-core什么关系如果不使用shiro-web只使用shiro-core如何实现web应用安全你的代码与shiro-web相比有哪些不足,/,设计模式与面向对象有关系吗?,设计模式,是针对特定问题使用面向对象设计原则对业务逻辑进行抽象的参考。,学面向对象有用吗,如果面向对象有用还要软件工程干啥,业务逻辑中的魔鬼,class XXXComponent void setConfigDirectory(String path);,业务逻辑中的魔鬼,请输入xx路径:,浏览,这多简单,就是读取配置显示出来,输入配置保存嘛。搞个界面按照产品经理的要求把风格调好看点,还搞个浏览按钮让用户直接选择不用手动输入路径真贴心,用户体验好。获取之前保存的目录显示在界面上。接受用户输入的值,检查下正确性保存用户输入的值调用XXXComponent .setConfigDirectory代码好简单了,2小时搞定,就是调界面上的css可能要费点时间,./config/XXdir,业务逻辑中的魔鬼,产品经理:界面上显示的相对目录,用户不知道绝对路径,要在界面上显示绝对路径。某程序猿:简单,把系统配置根目录传到前端,在前端拼接下字符串就ok了,业务逻辑中的魔鬼,产品经理:有用户觉得显示绝对路径不安全,需要增加一个securityPath配置,如果设置为true,绝对路径也要显示成先对路径,或者隐藏只显示一部分。某程序猿:简单,读取配置后根据securityPath的设置转换一下路径。,业务逻辑中的魔鬼,产品经理:XXXComponent需要支持从数据库读取配置某程序猿:简单,数据库连接字符串里有特殊符号,在XXXComponent .setConfigDirectory里判断一下,如果是数据库连接字符串就从数据库读。,业务逻辑中的魔鬼,产品经理:用户修改了配置之后要把原来保存的数据迁移到新的位置某程序猿:简单,在XXXComponent .setConfigDirectory里,魔鬼养成!,某程序员:WhatFuck!这一堆代码都是干啥的配置相关逻辑分散得到处都是还前后端都有!XXXComponent为什么要负责读取配置,还分别读取数据库的和文件型的。说好的单职原则了!,面向对象能阻止这个魔鬼吗?设计模式能阻止这个魔鬼吗?离了业务逻辑谈设计,都是扯淡。,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 abstract 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 Geom

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论