开闭原则的概念,软件实体对扩展开发,对修改关闭;
实现开闭原则的关键,利用接口或抽象类抽象出系统的抽象层,抽象层不变,利用实现层进行扩展;
对可变性的封装,将可变的元素封装起来,防止改变扩散到整个应用;
注意控制封装的粒度,不要将两种可变性封装到一起;
继承是用来封装可变性的,一般的继承层次不要超过两层;
策略模式是对开闭原则的很好诠释,其他还有工厂模式、建造模式、桥接模式、门面模式、调停者模式、访问者模式和迭代子模式等;
对“将条件转移语句改写成多态性”的重构行为应当遵循开闭原则,防止多态性污染;
java下的单方法接口通常用来实现函数指针或者委托的功能;
任何一棵继承树都要以抽象类为根,具体类不是用来继承的,更不要从工具类继承;
抽象类要拥有尽可能多的共同代码,同时拥有尽可能少的数据。
当Coad条件全部满足时,才应当考虑使用继承:派生类是基类的一个特殊种类,而不是其的一个角色,也就是说要区分“Has-a”和“Is-a”;永远不 会出现需要将派生类换成另外一个类的派生类的情况;派生类具有扩展基类的责任而不是具有置换或注销基类的责任;只有在分类学角度上有意义时,才可以使用继 承。
实现开闭原则的关键,利用接口或抽象类抽象出系统的抽象层,抽象层不变,利用实现层进行扩展;
对可变性的封装,将可变的元素封装起来,防止改变扩散到整个应用;
注意控制封装的粒度,不要将两种可变性封装到一起;
继承是用来封装可变性的,一般的继承层次不要超过两层;
策略模式是对开闭原则的很好诠释,其他还有工厂模式、建造模式、桥接模式、门面模式、调停者模式、访问者模式和迭代子模式等;
对“将条件转移语句改写成多态性”的重构行为应当遵循开闭原则,防止多态性污染;
java下的单方法接口通常用来实现函数指针或者委托的功能;
任何一棵继承树都要以抽象类为根,具体类不是用来继承的,更不要从工具类继承;
抽象类要拥有尽可能多的共同代码,同时拥有尽可能少的数据。
当Coad条件全部满足时,才应当考虑使用继承:派生类是基类的一个特殊种类,而不是其的一个角色,也就是说要区分“Has-a”和“Is-a”;永远不 会出现需要将派生类换成另外一个类的派生类的情况;派生类具有扩展基类的责任而不是具有置换或注销基类的责任;只有在分类学角度上有意义时,才可以使用继 承。