摘要:
目录 Catelog 目录 Catelog 序言 Perface 真经第一章:世界 Waltanschauung 真经第二章:抽象 Abstraction 真经第三章:层次 Arrangement 真经第四章:继承 Inheritance 真经第五章:耦合 Couple 真经第六章:运作 Moving 真经第七章:建造 Build 真经第八章:刻画 Delineate 真经第九章:模式 Pattern 真经第十章:悟道 Doctrine 后记 Afterword 参考文献 Reference序言 Perface “佛曰:苦海无涯,回头是岸。——佛教用语” 面向对象(Object-Oriente 阅读全文
摘要:
1,对象与责任2,对象与时间3,对象与现实世界一、对象与责任: 复习多态的实现:(1)继承 public abstractclass Animal(){public abstractstring Bark();} public class Dog():Anmial{public override string Bark(){return "汪汪";}} public class Cat():Anmial{public override string Bark(){return "喵喵";}}(2)接口 public interface IBarkble( 阅读全文
摘要:
前言:本来上篇已经是完整篇,可在上篇第22楼virus的回复中,我发现了上篇文章中的最终解决方案还是存在着本质的缺陷。再看到第24楼richardzeng的回复,仔细想来,的确应该是像richardzeng的写法一样有更深一步的考虑,感谢两位的回复。我将补充方案的讲解加了进来,希望可以给大家以帮助。接上篇 凭什么要用面向对象编程——面向对象重要设计原则概述★2007-10-02 08:00 小菜在家中准备小菜开始准备给人家讲座的内容,一开始都很顺利。可是当要把不同的验证方式给细化时,发现了问题。24 原有的接口实现关系图如果要再把是用户名密码验证,还是指纹验证的代码加进来,应该如何写具体的实现 阅读全文
摘要:
本文是我打算离开公司前的一次培训讲座的准备材料,讲得是几个面向对象的设计原则,没什么新鲜东西,都是比较浅显的内容,推荐刚接触面向对象编程的 新手阅读,高手达人们路过飘过即可。文章略长,不过内容过渡上比较平缓,应该比较容易阅读。 第一种讲法凭什么要用面向对象来编程,不用是否可以?今天我们通过讲这么几个设计原则来说明为什么要用面向对象,它的好处在哪里。开放-封闭原则:是说软件实体(类、模块、函数等等)应该可以扩展,但是不可修改。里氏代换原则:子类型必须能够替换掉它们的父类型。依赖倒转原则:A. 高层模块不应该依赖低层模块。两个都应该依赖抽象。B. 抽象不应该依赖细节。细节应该依赖抽象。讲解完毕,今 阅读全文
摘要:
面向对象的好处就是可以让你的代码语义性更强,因为使用它可以直观的表达“谁.做什么()”的语义,使得我们的程序代码更接近自然语言。然而现实的情况就是我们经常会看到使用面向对象的编程语言写出来的却是面向过程的代码。其实这也不难理解因为大多人开始学习编程语言都是从面向过程的语言学起的如BASIC,C等这些经典的编程入门语言。但在实际开发中一方面是这些面向过程的知识和经验对我们产生了一种先入为主的主导作用,另一方面我们又希望能够得到面对象编程的优势。最终使得我们实际产出的是即没有向过程也没有面向对象的代码,虽然感觉设计有问题但又不知道问题出在那。后来我们知道了OO设计原则、OO设计模式便如获至宝般开. 阅读全文
摘要:
封装 封装(Encapsulation)是将代码及其处理的数据绑定在一起的一种编程机制,该机制保证了程序和数据都不受外部干扰且不被误 用。理解封装性的一个方法就是把它想成一个黑匣子,它可以阻止在外部定义的代码随意访问内部代码和数据。对黑匣子内代码和数据的访问通过一个适当定义的 接口严格控制。如果想与现实生活中的某个事物作对比,可考虑汽车上的自动传送。自动传送中包含了有关引擎的数百比特的信息,例如你正在以什么样的加速度 前进,你行驶路面的坡度如何,以及目前的档位。作为用户,你影响这个复杂封装的方法仅有一个:移动档位传动杆。例如,你不能通过使用拐弯信号或挡风玻璃 擦拭器影响传动。所以档位传动... 阅读全文
摘要:
前言此文译自CodeProject上<How I explained OOD to my wife>一文,该文章在Top Articles上排名第3,读了之后觉得非常好,就翻译出来,供不想读英文的同学参考学习。作者(Shubho)的妻子(Farhana)打算重新做一名软件工程师(她本来是,后来因为他们孩子出生放弃了),于是作者就试图根据自己在软件开发设计方面的经验帮助她学习面向对象设计(OOD)。自作者从事软件开发开始,作者常常注意到不管技术问题看起来多复杂,如果从现实生活的角度解释并以对答的方式讨论,那么它将变得更简单。现在他们把在OOD方面有些富有成效的对话分享出来,你可能会发 阅读全文
摘要:
导读:个性化的字体是品牌文化和创新产品的标志名片。本文将介绍7款免费的字体编译器,比较它们的优劣和实用性。原文作者Jacob Gude是知名设计网站SixRevisions的创办者和主编辑。第一款:FontStruct特点:网上编译,不需要安装任何桌面软件。可以在任何浏览器上创建自己的字体档案,开始设计。 文件格式:支持True Type Font file (.ttf)用户在网页上完成字体编辑后,可以把最后的设计以.ttf方式下载保存。可以用在Windows/Mac上的各种应用(Microsoft Office, Photoshop等)和您自己的网页设计上。具体操作方式可以参见导读(译者)第 阅读全文
摘要:
今天在翻thinkphp文档时发现了令牌验证功能,觉得有点意思,于是扩展学习了一些,在此做一下总结。令牌验证就是标识符匹配。当用户请求一个表单页面时,服务器会生成一个令牌Token(一般是一串字符)并保存在session里。然后将表单页面返回给用户,同时这个Token也附在了表单中,作为一个隐藏域。当用户填完表单,点击提交时。服务器收到提交过来的数据,首先会从中拿出Token域数据,将之与该用户在服务器session里的Token值做比较。当二者一致时,服务器才确认这个提交是正常的,然后做进一步处理;否则会直接返回而不做后续处理。每次验证成功之后,清除该项Token。对于每次的表单页面请求都生 阅读全文
摘要:
ActiveRecord是什么: 1. 每一个数据库表对应创建一个类.类的每一个对象实例对应于数据库中表的一行记录; 通常表的每个字段在类中都有相应的Field; 2. ActiveRecord同时负责把自己持久化. 在ActiveRecord中封装了对数据库的访问, 即CRUD; 3. ActiveRecord是一种领域模型(Domain Model), 封装了部分业务逻辑; ActiveRecord不是什么: 1. Row Data Gateway Row Data Gateway模式中每个对象也封装了数据库记录的状态和持久化到数据库的访问方法; 这两个有时候很难区分. 细微的区别在于.. 阅读全文