程序设计-多用组合少用继承原则

一、方法服用的两种最常用的技术就是类继承和对象组合。

1.继承复用:子类中可以将父类的方法当作自己的方法使用(非private修饰的)

优点:

--可以通过重写父类方法,来修改或扩展父类方法

缺点:

--继承来的方法在编译期就已经确定,无法在运行期间改变从父类继承来的方法的行为

--子类和父类是强耦合关系,也就是说,父类改变,必然导致子类改变

--继承复用也成为“白盒服用”,也就是说父类的内部细节对于子类而言是可见的。

2.组合复用:类(A)的组成成员中有其他的若干对象(B、C), A Has-B,这样A就可以委托对象B调用其方法,即A以组合的方式复用对象B的方法。

优点:

--组合复用也成为“黑盒复用”,因为当前对象只能委托所包含的对象调用其方法,这样一来,当前对象所包含的对象方法的细节对当前对象是不可见的。

--对象与所包含对象为弱耦合关系,因为,如果修改当前对象所包含对象类的代码,不必修改当前对象的代码。

--当前对象可以在运行时动态指定所包含的对象,例如,假设Com是一个接口,该接口中有一个computer()方法,那么下列Computer类的对象可以在运行是动态指定所包含的对象,即运行期间,Computer类的实例可以调用setCom(Com com)方法将其中的com变量存放任何实现Com接口对象的引用。

public class Computer
{
    Com com;
    public void setCom(Com com){
        this.com=com;
    }
    public void f(){
        com.computer();
    }
}

缺点:

--容易导致系统中的对象过多

--为了组合多个对象,对于接口的定义必须仔细

二、多用组合,少用继承

为了降低系统的耦合性,要多用组合,少用继承。

装饰模式、策略模式、中介者模式中会对于两种复用方式的优缺点有多体现。敬待。


猜你喜欢

转载自blog.csdn.net/zw3413/article/details/80077772
今日推荐