昨天忙了一天,晚上加班到了12点,虽然工作有时候比较累,但是整体来讲还是比较轻松的,国企加上我是今年才毕业的应届生,导致了现在这种情况。工资也真的不算高...但我觉得最开始还是要踏踏实实一点比较好。学习才是王道嘛,技术好了,功底扎实了,工资自然应该不是问题。今天看的是第二章,OO大原则,这一章可能主要涉及到一些设计模式的基本原则和设计模式,因为这毕竟是软件开发人员的必修课,是成为一个好的软件开发人员的开始,之前完完整整的看了一遍《大话设计模式》,确实写的不错,如果没看过设计模式的可以拿他作为起步嘛,只有起步了,才会有进步。再强调一下,设计模式真的很重要,我们携手共进步吧!
笔记
设计模式就像是武术招式,你可以无招胜有招,但是那毕竟是巧合或者已经达到了出神入化的境地,还有一种则是研习前辈们的招式,在适当的时候用了适当的招式,这就是高手。前辈们研究出了“设计模式”这一套高招,我们可以按照相应的招式,书写出美妙高效的代码。而其中的原则,则是这门武功的内功心法,兄弟们,好好练习吧。
1、原则:
2、单一职责原则(SRP):适配器模式就是单一职责的完美呈现,当其中一个类有两个职责,操作数据库和判断权限的时候,我们就可以将判断权限的职责单独放到适配器类里面,从而通过其进行访问数据,这样的实现就体现了单一职责原则。同样,外观模式(facade)也同样体现这个原则。
3、单一职责是由引起变化的原因决定,而不是由功能职责觉得,虽然职责常常是引起变化的原因,但有时却未必,应该审时度势。当有一个变化能引起多个职责发生改变的时候,就该考虑把这些职责放到一个类中统一管理,所以,避免相同的职责被分散到多个类中,和避免一个类拥有过多的职责一样重要。
3、开放封闭原则(OCP):对扩展开放,意味着有新的需求的时候,可以对现有代码进行扩展,以适应新的情况。对修改封闭,意味着一旦设计完成,就可以独立的完成其工作,而不要对类进行任何修改。
4、实现开放封闭的核心思想就是对抽象编程,而不是对具体编程。通过继承和多态机制,覆写其方法以达到扩展的目的。实现它的具体模式包括模板方法模式(Template)和策略模式(Strategy)。
5、依赖倒置原则(DIP):著名的好莱坞法则:不要调用我们,我们会调用你,是对依赖倒置原则最形象的诠释。核心思想就是依赖于抽象。
(1)高层模块不应该依赖于低层模块,二者都应该依赖于抽象。
(2)抽象不应该依赖于具体,具体应该依赖于抽象。
6、抽象的稳定性决定了系统的稳定性,因为抽象是保持不变的,依赖于抽象是面向对象的精髓,也是依赖倒转原则的核心思想。
7、接口隔离原则(ISP):在实际编程当中,“胖”接口会要求继承她的类必须实现她的所有方法,但有些对于类是没有必要,所以为了避免这种情况,就有了接口隔离原则。
8、分离接口的两种方式:
(1)委托分离,通过增加一个新的类型来委托客户的请求,隔离用户和接口之间的的直接依赖,但是会增加系统开销。
(2)多重继承分离,通过接口多继承来实现客户需求,这种方式值得推荐。
9、Liskov替换原则(LSP):核心思想就是子类必须能够替换其基类。子类继承父类,其关系是IS-A的确定的,在.NET语言中以is为关键字判断两个对象是否兼容。
10、从客户程序的预期来保证子类和父类在行为上的相容,是Liskov原则的另一关键。