随笔分类 -  面向对象

摘要:使用继承的两个动机: 1.多态 2.共享代码如果仅仅为了共享父类的公共接口,使用duck typing就可以了而无需使用继承。 阅读全文
posted @ 2012-04-03 11:42 babykick 阅读(218) 评论(0) 推荐(0)
摘要:Conceptual Class:1、 创建conceptual class 比 association 更重要conceptual class 定义了场景的角色,只有存在合适的角色,才会存在良好的association,conceptual class 在model中起到核心的作用。2、 利用 conceptual class catalog 发现conceptual class因为概念在现实生活中是普遍存在的,常见事物的存在模式能告诉你需要什么class。3、 利用association 发现conceptual class事物之间的关联隐含了事物之间的互动关系,从而帮助发现关联的clas 阅读全文
posted @ 2011-06-24 10:48 babykick 阅读(465) 评论(0) 推荐(0)
摘要:初读了《UML和模式应用》收获很大,最重要的事这本书能教你了什么是OOA/D的思想,怎么认识对象,以及UML的威力。UML作为模式语言用于设计和思考。如何赋予对象的职责:Doing responsibilities of an object include:o doing something itself, such as creating an object ordoing a calculationo initiating action in other objectso controlling and coordinating activities in other objectsKno 阅读全文
posted @ 2011-06-12 13:03 babykick 阅读(578) 评论(0) 推荐(0)
摘要:MVC模式百科名片 MVC模式MVC架构是"Model-View-Controller"的缩写,中文翻译为"模型-视图-控制器"。MVC应用程序总是由这三个部分组成。Event(事件)导致Controller改变Model或View,或者同时改变两者。只要Controller改变了Models的数据或者属性,所有依赖的View都会自动更新。类似的,只要Controller改变了View,View会从潜在的Model中获取数据来刷新自己。目录MVC简介 MVC的产生 MVC设计思想 视图 模型 控制MVC设计模式的实现 ASP NET MFC JavaMV 阅读全文
posted @ 2011-05-17 15:21 babykick 阅读(642) 评论(0) 推荐(0)
摘要:这几天看了Design patterns explain.收获很大,结合之前看的Head First Pattern、敏捷软件开发,写写读书笔记:本书作者希望我们用全新的观点来看待面向对象设计:面向对象设计开发,对象是中心,因此如何理解对象是最重要的:1、理解对象是一个职责体,从高处看,系统解构成不同的职责体,各司其责,自己要对自己负责,做完做好所有应该做的事,也不要越俎代庖帮别人做事,别人的事让别人自己做,需要的参数通过接口传递过去就可以了,仅最大努力保持对象的独立性、内聚性。2、理解对象的目的是隐藏,隐藏一切需要隐藏的东西,不仅仅是对象、方法。主要是隐藏变化、隐藏具体实现、隐藏代理、委任等 阅读全文
posted @ 2011-05-15 21:37 babykick 阅读(263) 评论(0) 推荐(0)
摘要:一、对象发现对象检查对象的职责CRC 类-职责-协作确定对象层次结构发现对象属性发现对象操作二、设计指南1、整体把握2、封装最大化封装 最小化耦合 分离GUI3、设计类类需要有一个目的,有自己的职责类有良好的属性: 定义一些操作给其他类使用,或自己作为一个结构供其他类使用关联与继承类不能什么事都做:不要把一个类弄得太大4.继承is a 测试:都必须能通过is a 测试,即保证基类能被子类向上转型。将属性和操作尽可能上移:共有方法和属性别把属性和方法移到太高的位置:不是共有的属性不要放到超类中发现超类三、通用指南名字重要一次做一件事不要重新发明轮子不会一次就搞定简洁性您的软件不会消失 阅读全文
posted @ 2011-05-15 15:55 babykick 阅读(306) 评论(0) 推荐(0)
摘要:继承对面向对象来说可能有先入为主的影响, 常使人认为继承代表了多态,代表了抽象,代表了面向对象。面向对象其实是说从对象的观点来思考问题,即一切都是对象。并不是说面向对象就必须要有上下级的层次关系,必须有基类,他只是一种看待问题的方式。继承会增加层次和layer,layer一多就不好控制,继承带来了接口污染和不必要的复杂度,每增加一层就使得下层的类需要担心更多问题,upcast也就越难。组合将结构扁平化,更加容易符合设计的几大原则,也更加符合面向接口的思想,因为组合将职责分离了,运行时需要哪个再组合,更容易产生内聚性强的类,使得复用性大大增加。继承则由于继承的关系将行为限制在了基类,任何继承于它 阅读全文
posted @ 2011-05-13 15:21 babykick 阅读(343) 评论(0) 推荐(0)
摘要:OCP,SRP,DIP,LSP,SIP 的设计原则又归为一个原则:一切为了抽象,因为抽象才好降低复杂度。面向接口是什么,接口一个规范,使用接口的client不需要知道这个接口究竟是由谁实现,怎么实现的,实现者也不知道是谁调用了它,达到解耦的目的。OCP: 为了close于不变的抽象SRP: 为了接口职责的单一抽象DIP: 为了上层和下层仅依赖于抽象的中间层LSP: 为了最大化抽象能力SIP: 为了将不同职责分离成单个分开的抽象接口 阅读全文
posted @ 2011-05-12 23:56 babykick 阅读(219) 评论(0) 推荐(0)
摘要:今天下午帮助诺西的工程师解决了一个网络的小故障,回来的路上回想了整个解决问题的过程,发现解决问题的思路和软件工程的解决问题的方法是一致的,基本上就是一个套路,方法论是抽象于技术之上的。问题是这样的:前天下午我们网管局域网突然出现大量丢包,网络严重阻塞,到其中一个机房的数据通信全阻。整个局域网处于一个广播域,我的机子也在这个广播域中,也受到影响。不多说直接上wireshark,抓包结果发现大量的Ethnet II的包,源和目的地址都是mac地址,协议unknown,很显然是这是个广播风暴。由于到那个机房最严重,完全不通,无法维护软交换设备了,叫上公司的车赶到机房先看看再说。打开机柜门,诺西厂家最 阅读全文
posted @ 2011-05-12 20:46 babykick 阅读(325) 评论(0) 推荐(0)
摘要:最难的不是理解设计模式,而是在实际项目中灵活应用它们,设计模式看似简单,用起来却不知从何下手。理论是用来实践的,实践才能出真理。设计模式属于OO的一部分, Gof的23种模式只不过是设计模式的沧海一粟,不同的领域都会产生不同的设计模式,当然你也可以总结出自己的设计模式。对于学习设计模式的方法,我们不需要一开始就花很长的时间把它们都读通读透,只要花个十几天每天两个小时对每个模式有个简单的印象就可以了,然后在实际工作中去应用,去把它们读通读透。其实,只要你的OO能力达到一定的程度,设计模式都是无师自通的。学习设计模式几个重要的问题?每一类设计模式都是为了解决某类特定的问题而产生的,要了解这些设计模 阅读全文
posted @ 2011-05-12 09:07 babykick 阅读(222) 评论(0) 推荐(0)
摘要:Functions that use pointers or references to base classes must be able to use objects of derived classes without knowing it.Robert C. Martin氏为我们总结了在面向对象的设计(OOD)中应该遵循的原则,这些原则被称为“Principles of OOD”,关于“Principles of OOD”的相关文章可以从Object Menter得到。本文介绍“Principles of OOD”中的里氏替换原则:Liskov Substitution Princip 阅读全文
posted @ 2011-05-12 08:52 babykick 阅读(475) 评论(0) 推荐(0)
摘要:最近看了很多设计模式的书,总结了一下,设计模式虽然林林总总,但是设计模式的核心基本可以浓缩成一句话:那就是 面向接口编程设计模式无非就是接口之间互动的各种模式,这些互动大致有以下几类:委任: strategy,proxy,facade,adapter通知: observer构造: factory,builder,singleton等等,书上大多有总结,我不一一写出来了1、面向接口就是将接口与实现分离,上层接口负责描述抽象逻辑,下层实现负责将接口行为具体化。2、面向接口要最大程度的延迟实现到子类中去,在基类中只保留和传递类型的引用,一切通过抽象的接口函数访问3、接口类和抽象类应该只包含对接口的调 阅读全文
posted @ 2011-04-25 20:47 babykick 阅读(397) 评论(0) 推荐(0)