设计原则笔记
来西安快2个星期了,带领学员们一起学习Flex,当然之前要学习HTML、CSS、JavaScript、XML等相关前端基础知识,自己也收获不少。一方面锻炼了自己的技术能力,同时也提升了项目管理、和人沟通的能力。之前在学习也接触过一些设计原则,有点印象,可能是当时的代码量不多,所以体会不深。现在应该有些理解了。
我们做计算机或者软件开发的,肯定和代码和文档打交道的多,有时我们的工作就是这2样了,当然有时也会开会讨论。但是在IT行业,思想决定了您未来的发展方向和晋升的职务。当然,我们的代码量最好是10K以上,要不然我们无法体会设计原则的思想和精华。
首先,就是设计的基本原则:
1.封装变化(Encapsulate what varies)
2.面向接口编程而非实现(Code to an interface than to an implementation)
3.优先使用组合而非继承(Favor compositon over Inheritance)
第一点和第二点相对好理解,但是第三点有点转不过弯来,后来上网查了一下,如果过多的使用,代码的耦合度较大,后期不好维护。前辈的理解:因为我们需要体现事物在抽象层面上的共通性,这时候接口就出现了,我们通常更关注can-do而不是is-a(当然不排除很多时候我们关注后者),组合可以帮助我们做到一个事物得到多个事物的功能(真传),而不是财产(遗传基因),所以我们可以通过组合来实现接口,以接口继承的形式来实现一种关注can-do的多继承。
相比继承,接口实现更加灵活,组合更加具有可变化性,并且不会让继承树太过复杂,造成类库的难以控制。
另外我还参考了://blog.csdn.net/Cpp_Java_Man/archive/2006/05/02/705279.aspx,这边博文对组合和继承讲解比较通俗易懂。我们为什么不用继承?继承破坏了类的封装性,增加了类与类之间的耦合度,虽然继承是面向对象三大特征之一,我们还是要转变一下观念。当然最初学面向对象设计时,我们还是有必要使用继承。
然后就是5大原则了:
1.单一原则:一个类只完成一系列相同的事情,当然不是说一个类就一个方法。要不然我们修改一处,其他的地方都要修改,为维护性差
2.开放-封闭原则:扩展是开放的,更改是封闭的
3.里氏替换原则:子类必须能够替换它们的基类。经典的例子就是:企鹅类和鸟类,企鹅是鸟,但是不能飞,所以我们设计这2个类就要注意了。不是简单的继承关系了
4.依赖倒置:高层模块不依赖底层,二者都依赖于抽象;抽象不依赖于细节,细节依赖于抽象,现在还是有些模糊;
5.接口分离原则,这个相对好理解,一个接口就完成一个功能,不要担任过多的功能。
IT行业,所要求的还是大家的兴趣,以及学习新技术能力。当然对于毕业生来说,实践(代码量的多少)和理论(专业基础)是无法替代的。
本文基于
知识共享署名-非商业性使用-相同方式共享
3.0 中国大陆许可协议发布,欢迎转载,演绎,但是必须保留本文的署名liminjun88(包含链接http://www.cnblogs.com/liminjun88/),且不得用于商业目的。如您有任何疑问或者授权方面的协商,请与我联系
。