面向对象编程设计原则

来源:互联网 发布:淘宝在哪里评价商品 编辑:程序博客网 时间:2024/05/17 06:31

一、单一职责原则

面向对象编程的设计中的最小单位是类,单一原则就是说,一个类只给他一种功能,也就是一个类只实现一个业务功能,那么类也是业务设计上的最小单位。我们可以肯定,类将会只有一个引起它变化的原因——这个类的功能所涉及到的业务变更。如此这般,只有当某一项业务变更时,类才需要改动。

单一职责原则的目的就是让一个类改动的原因尽量单一,牵扯到的业务尽量细小,以减少耦合,便于代码的维护。

二、开放封闭原则

设计过程中,乃至设计完成,甚至设计完成后相当一段时间里,我们都会面临新的需求。所以,我们的设计必须要能在承受需求的改变时保持代码稳定。要保证代码稳定的绝对方法是不修改,要使软件能良好的承受需求的变化就必须修改,那么如何做才能解决这个矛盾呢?

香港回归,一国两制就是很好的提示,我国社会主义制度不变,类似的,我们已经写好的代码封闭,尽量不去修改;两种制度,就是增加一种制度,同样,我们允许代码的扩展,增加代码是被允许的。

这其中有一个问题,无论我们是多么地想“封闭”,一定存在一些无法封闭的变化,既然不可能完全封闭,那么我们就必须对无法封闭的变化隔离出来,防止它再次变化,这就是将原来的封闭的设计转变成可扩展的设计所以,当我们最初设计时,这里不会发生变化,那么我们不用想太多,大可以封闭,但是当这里发生变化时,我们就必须创建抽象来隔离以后的同类变化。

总之,面对需求,面对代码的改动,最大化让它变成增加新代码,而不是更改现有的代码。这就是开放封闭原则的精髓。

三、依赖倒转原则

要保证开放封闭原则,就要求程序的模块和模块之间,功能和功能之间的耦合性尽量的低,也就是说,我只拿我需要的那部分,至于其它的部分我不关心,即使它们变化,只要我需要能满足我就行了。所以,模块之间不应该依赖具体,而应该依赖抽象。具体是指具体的类,抽象就是抽象类和接口。

四、里氏代换原则

这个原则很简单,子类继承父类,就必须拥有父类的所有功能。从某种特定情况中看起来,子类就是父类,父类能做的事,子类都可以做。它们不同的地方就只能是子类比父类的功能多。

五、迪米特法则

如果两个类,各自都能完成一个功能,他们就可以分开,现在有一功能需要他们俩共同完成,我们就不需要他们俩合成一个。迪米特法则,如果两个类不必要直接通讯,但是其中一个类需要调用另一个类的方法的时候,我们可以通过第三方来转发这个调用,减少类和类之间的依赖。

这个法则有一个缺点,代码中会出现大量的中介类,所以使用时一定要把握好度。

原创粉丝点击