我们知道JAVA是纯面向对象的高级程序语言,使用面向对象的编程语言写程序,特别是写出好程序就必须掌握一些基本原则,就像数据库设计中需要遵循三范式(不知道的自行百度)一样。那么在编写java程序时我们要遵循那些基本原则呢,听我一一道来。
Java面向对象程序设计主要设计的基本原则有七种:
原则一:单一职责。单一职责关注的核心是我们设计的类(包含数据又称属性和行为又称方法)的行为、功能应该是单一的,而不是一个类具备很多种功能,虽然它可以有多种功能,这个问题必须限定好场景,在我们使用的场景中必须要设计一个单一职责的类,单一职责并不是说类中只能有一个方法。举个例子一个已婚的程序员,这个程序员在公司和家里分别有两个主要职责就是写代码和照顾家人,如果我们写了一个类有两个方法分别是coding()和care(),还有一个身体指标的属性,写代码和care都可能引起程序员身体指标的变化,如果哪天程序员病倒了,那么引起程序员病倒的原因就可能会有两个,这就违背了单一职责的原则,也就是单一变化原因的原则。怎么符合单一职责呢,就是把这两个职责分拆到两个类中。这样导致程序员身体变化的原因就单一了,相对我们关注的场景。这样就实现高内聚、松耦合。
原则二:接口分离。接口分离关注的核心是我们设计的类的行为数量尽量少,只对外提供必要的功能。还是上面那个程序员,如果仅仅是照顾家人的单一职责,假设家人认为做饭、洗衣就是就是好的照顾,那么我们非要在类中再添加拖地等方法,显然就不合适了,换句话就是只提供必须的功能,这样就提高了内聚性。
原则三:里式替换。里式替换关注的核心是我们设计的类与抽象父类或者接口的关系。在父类出现的地方,子类或者实现可以出现,但是反过来不行。这句话包含了几个隐含意思,分别是子类全部实现了抽象父类或者接口的方法,子类重写的方法的入参等于或者大于父类,方法的返回值类型等于或者小于父类,子类可以有自己的属性。
原则四:依赖注入。依赖注入关注的核心是依赖抽象或者接口编程,松耦合性。这样实现怎么变不会影响外部调用者也变化。
原则五:迪米特。迪米特关注的核心是一个对象对其他对象尽量少了解。
原则六:开闭原则。开闭关注的核心对已有类的修改应该通过添加,而不是修改原来的代码,也就是对添加开放,对修改关闭。这样可以避免修改一个问题带来更多的问题。
原则七:优先使用组合而不是继承。这个原则关注的核心就是解耦。让其他类对自己的影响最小化。从强依赖变成若依赖。
从这七个设计原则,我们可以看出,我们设计程序一直的关注的主线就是高内聚性和低耦合性,这要可以提高我们代码维护性,扩展性,复用性以及便于测试。好了下一节正式开始我们java设计模式-每天三个设计模式这个主题。