动态变化的OO设计】的更多相关文章

今天看到个题目:对象会动态的变化. 游戏精灵,有人和神仙,但是随着人的不断积分,会升级为神仙:神仙也可能会因为积分的减少而降级为人.这种情况怎么画出个类图来. 这是第一版的设计,正常思维.人和神仙都是游戏精灵,从Is-A的角度来说是正确的.但是问题是,当人升级为神仙的时候会出现: var person=New 人(); //人升级 person=new 神仙(); 这个时候原来的人其实已经死掉了,这是不对的.第二版: 把角色抽象出来,只有一种游戏精灵,但是他的角色是不一样的,升级或者降级以后只是…
OO本身就是一种大的设计模式,它是随着软件规模越来越大产生出来帮助人们建模和开发的理念,生来就带着封装.继承.多态等可复用基因.为了充分发挥这些基因的功效,使用者需要遵守一定的原则,就是所谓的面向对象设计原则.然而正确地使用这些运用这些原则并不容易,只有把这些原则吸收成为身体一部分的经验丰富的工程师才能在遇到各种问题时,灵活地使用它们.一些OO大师为了方便新手更好地理解OO原则,就根据经验假象了一些软件设计过程中经常碰到的问题,并给出了遵循OO原则的解决这些问题的设计方案,就产生了设计模式,正如…
Todd.log - a place to keep my thoughts on programming 评OO设计 昨天在微博上看到InfoQ提供了一本新书<完美软件开发:方法与逻辑>的PDF迷你版,这本书的介绍吸引了我: 这书是培养帅才的书.如果想成为一方悍将(比如:C++高手,Android高手),那这书是不太适合的:但如果想鸟瞰全局,运筹帷幄,带领团队攻城略地,那这书是很有参考价值的. 我重点看了它的第7章“完美设计和编码之解构”,应该说这是一本好书,但是对我来说总体上没有什么新的收…
这部分增加一点自己的感想,OO设计原则下面讲述的很清晰;看完之后有点感想如果我们在实际开发当中能够把这些原则熟烂于心的话那我们的代码质量和个人能力会有很显著的提神.根据自己的实际经验看很多开发者在开发过程中很多基本的知识确实没有熟烂于心导致开发的时候只有基本的内容.我所在的项目就是代码接口各种乱,可读性和可维护性特别差:当然自己在开发的时候也都没有做到,在后面的工作中尽量避免 前面发表了5篇OO设计原则的文章,在这里我将这个5个原则如何在我们设计过程进行应用进行一下总结, 这是我通过阅读和学习很…
常用的OO设计原则: 1 封装变化:找出应用中可能需要变化之处,把它们独立出来,不要和哪些不需要变化的代码混在一起. 2 针对接口编程,而不是针对实现编程. 3 多用组合,少用继承. 4 松耦合:为了交互对象之间的松耦合设计而努力. 5 开放-关闭原则:类应该对扩展开放,对修改关闭. 6 依赖倒置:要依赖抽象,不要依赖具体类. 7 最少知识:只和你的亲密朋友交谈. 8 好莱坞原则:别调用(打电话给)我们,我们会调用(打电话给)你 9 单一责任:一个类应该只有一个引起变化的原因.…
上一篇文章基于jTopo的拓扑图设计工具库ujtopo,介绍了拓扑设计工具,这一篇我们使用SignalR2结合ujtopo实现拓扑图的动态变化. 仅仅作为演示,之前的文章SignalR2简易数据看板演示,用一个小的示例演示了SignalR作为数据看板的用法,这次我们将这个例子稍微改变一下,当点击[数据模拟]的时候,数据还是加1,当为奇数时,改变其中一个结点的图片,当为偶数时,再把这个结点的图片改变为另一张图片:以此为基础,可以延伸出很多应用. 软件环境:VS2015 使用VS2015创建.net…
表单验证 $("#dataList").append("<div id='data"+dataNum+"' style='padding-top:3px;font-size:14px'>数据"+dataNum+":X=<input type='text' name='dataX"+dataNum+"' size='30' class='required number' /> Y=<inp…
1.数字动态变化 具体实现代码见 GitHub 源码 QExtension QCountingLabel.h /// 文本数字变化方式枚举 typedef NS_ENUM(NSUInteger, QCountingMethod) { QCountingMethodEaseInOut, // 开始结束慢,中间快 QCountingMethodEaseIn, // 开始慢,结束快 QCountingMethodEaseOut, // 开始快,结束慢 QCountingMethodLinear //…
利用函数嵌套和setTimeout函数实现时间动态变化 var myDate = new Date(); myDate.getYear(); //获取当前年份(2位) myDate.getFullYear(); //获取完整的年份(4位,1970-????) myDate.getMonth(); //获取当前月份(0-11,0代表1月) myDate.getDate(); //获取当前日(1-31) myDate.getDay(); //获取当前星期X(0-6,0代表星期天) myDate.ge…
简介 Pop 是一个可扩展的动画引擎,可用于实现任意iOS对象的任意属性的动态变化,支持一般动画,弹性动画和渐变动画三种类型. 项目主页: pop 最新示例: 点击下载 注意: 官方代码中,并不包含实例,而是用于编译的所有源代码,建议自行新建工程,并结合下文的代码片段查看效果. 入门 安装 通过CocoaPods安装 pod 'pop', '~> 1.0' 使用 在需要使用POP的地方,引入头文件: #import <pop/POP.h> 动画的开始,停止 与 更新 把动画添加到你想要拥…