阅读此书已几天有余,虽然自己是菜鸟,但是依然被其中精巧的设计模式所吸引,因此决定留下该读书笔记,以日后可查阅,更希望有高手可以不耻下看,帮忙改正其中的不对之处,由于能力有限,其中必定漏洞百出,还望见谅。
通过几章的阅读可以发现有两条原则是作者提及较多的,他们分别是:“开-闭”原则(OCP)和里氏代换原则(LSP),下面分别的解释一下这两条重要的原则。
[color=red]“开-闭”原则[/color]:这个原则说的是,在设计一个模块的时候,应该使这个模块不被修改的前提下被拓展。换言之,应当在不修改源代码的前提下改变这个模块的行为。
个人对“开-闭”原则的理解:[color=red]应该使这个模块不被修改的前提下被拓展[/color]这句话的意思是,假设这个模块是一个类或者是几个类,那么不建议修改这些类的内部代码,而是应该增加新的类来对其进行拓展。
[color=red]里氏代换原则的严格表达是[/color]:如果对每一个类型为T1的对象o1,都有类型那个为T2的对象o2,使得以T1定义的所有程序P在所有的对象o1都被替换成o2时,程序P的行为没有变化,那么类型T2是类型T1的子类型。比如,假设有两个类,一个是Base类,一个是Derived类,并且Derived类是Base类的子类。那么一个方法如果可以接收基类对象b的话:
method(b);
那么它必然可以接收一个子对象d,即可以有method(d);
通过几章的阅读可以发现有两条原则是作者提及较多的,他们分别是:“开-闭”原则(OCP)和里氏代换原则(LSP),下面分别的解释一下这两条重要的原则。
[color=red]“开-闭”原则[/color]:这个原则说的是,在设计一个模块的时候,应该使这个模块不被修改的前提下被拓展。换言之,应当在不修改源代码的前提下改变这个模块的行为。
个人对“开-闭”原则的理解:[color=red]应该使这个模块不被修改的前提下被拓展[/color]这句话的意思是,假设这个模块是一个类或者是几个类,那么不建议修改这些类的内部代码,而是应该增加新的类来对其进行拓展。
[color=red]里氏代换原则的严格表达是[/color]:如果对每一个类型为T1的对象o1,都有类型那个为T2的对象o2,使得以T1定义的所有程序P在所有的对象o1都被替换成o2时,程序P的行为没有变化,那么类型T2是类型T1的子类型。比如,假设有两个类,一个是Base类,一个是Derived类,并且Derived类是Base类的子类。那么一个方法如果可以接收基类对象b的话:
method(b);
那么它必然可以接收一个子对象d,即可以有method(d);