一、Java继承
缺点:
1、耦合性太强,容易破坏封装性,比如空实现之类的;
2、不好多继承;
3、为了扩展会多重继承,导致代码复杂不好维护;也不知道动态扩展
优点
1、继承无需创建父类的对象;
2、一般用于抽象方法的继承和实现,比如模板方法设计模式;
二、Java继承优点的利用——模板方法设计模式
1、SpringFramework里面的声明式事务处理;
有一个接口 PlatformTransactionManager,里面有三个抽象方法;
getTransaction();commit();rollback();
有一个抽象类,AbstractPlatformTransactionManager,实现上面的接口;
里面的commit和rollback基本流程都已经实现,只有getTransacton()方法没有实现;调用的是dogetTransacton()抽象方法;
有多个实现子类DataSourceTransactionManager、HibernateTransactionManager等,继承上面的抽象类;
他们里面有自己对上面抽象方法dogetTransacton()的实现;
2、自定义类加载器的实现;(委托机制)
自定义类加载器,一般要继承ClassLoader,然后它里面有loadClass方法,但是这个方法的流程是委托机制的流程,我们不用管他,只需要把findClass方法给覆盖就可以了;这个方法主要就是把文件给传进来而已;
3、面试题:聊聊对类,抽象类,接口的理解;
另外看那篇文章里面谈这三者的关系;
三、Java继承缺点的补偿——策略模式(组合)
如果前提条件一样,那么优先使用对象组合而不是类继承
参考;
https://my.oschina.net/u/3377232/blog/1518635
https://my.oschina.net/u/3377232/blog/1518632
四、集继承和组合与一身的一种设计模式——适配器(Adapt)模式
适配器模式也是一种包装模式
适配器模式不适合在详细设计阶段使用它,它是一种补偿模式,专用来在系统后期扩展、修改时所用。
https://my.oschina.net/u/3377232/blog/1518617
当接口发生改变之后,没法正常调用接口,那就用适配器做一个转换了;比如中国电器用美国的电路肯定是不行的,所以需要自带一个适配器去做一个转换;然后才能用美国的电给中国买的电器充电;