博文

开闭原则的理解

        开闭原则,“软件实体应当对扩展开放,对修改关闭”,是要达到一个状态,而要达到这个状态,就需要在写代码的过程中要想到和做到。。。 提倡开闭原则,其目的是我们在编写代码的时候就要考虑到每个功能模块的潜在的变化的可能性,尽可能的写简短单一功能并且复用性强的模块。 只有在写代码的时候注意到了这些,在重构或者变更的时候,才能做到“对扩展开放,对修改关闭”。 引用一段百度百科中关于开闭原则实现的一段文字: 开闭原则具有理想主义的色彩,它是面向对象设计的终极目标。因此,针对开闭原则的实现方法,一直都有面向对象设计的大师费尽心机,研究开闭原则的实现方式。后面要提到的里氏代换原则(LSP)、依赖倒转原则(DIP)、接口隔离原则(ISP)以及抽象类(Abstract Class)、接口(Interface)等等,都可以看作是开闭原则的实现方法。 这些原则中,大部分都有框架实现了,比如spring中的“依赖倒转”,用这些框架,可以节省大量工作时间,以及优化工程的代码结构。除这些框架之外的,就是在业务逻辑实现的部分,由程序员写代码的部分,如能做到遵循开闭原则,那么该项目质量应该会上升一个等级。 外话,当然项目的评判标准,最重要的还是架构的设计。

java中构造方法的执行过程

java中构造一个类实例,就要首先构造它的父类,因为子类是由父类派生而来,只有有了父类才可能有子类.而对于类本身的构造过程中,是要首先按顺序来对它的成员变量进行初始化,然后再调用其构造方法. 所以 java中构造一个类的整个过程可以理解为:如果有父类 先 1构造父类 然后构造本类 2本类成员变量初始化 3调用本类构造方法 实际上在每个类(除Object外)的构造造方法中都要执行super()方法,默认的情况下系统会自动为构造方法最前面加上super()这条语句,我们可以显示的写出来,并且也可为其加上参数,前提是父类有相对应的构造方法.前面说的构造本类之前要构造父类就是这条语句的作用. 成员变量的初始化过程是在super()语句后面其它方法体前面执行的 如果某个类的父类有多个构造方法时 子类就可以用不同的参数调用父类中相对应的构造方法来构造父类 如果加上自由块和静态的自由块 执行的顺序为: 父类的静态自由块,父类的静态成员变量被初始化 子类的静态自由块,子类的静态成员变量被初始化 父类的自由块,父类的成员变量被初始化 父类的构造方法 子类的自由块,子类的成员变量被初始化 子类的构造方法 自由块和成员变量是等同的优先级被初始化的 例: public class E { public static void main(String[] args) { new B(); } } class A { { System.out.println("父类A的自由块"); } A() { System.out.println("父类A的构造方法\n"); } D d = new D("父类A的成员变量被初始化\n"); static { System.out.println("父类A的静态自由块"); } static D dd = new D("父类A的静态成员变量被初始化\n"); } class B extends A { static D ddd = new D("子类B的静态成员变量被初始化"); static { System.out.println("子类...