zoukankan      html  css  js  c++  java
  • 从头认识java-6.4 如何在聚合与继承之间选择

    这一章节我们来聊一下在聚合与继承之间选择的问题。

    在我们平常的编码里面,使用聚合或者继承都可以,或者两者可以混合使用也行,这个时候就需要做出抉择,因为代码以后还需要维护,怎么才能达到维护简单?代码可读?。。。

    因此,我们必须在各种方案中做出抉择。

    笔者是这样认为的:

    如果新的类只是使用老的类的一部分功能,那么就是用聚合,直接new出来就可以了,满足need或者组合这个关系;

    如果新的类必须是老的类的一个特殊例子,那么就是用继承,满足is-a或者is-like-a这种关系

    例子:

    车是交通工具。

    代码:

    /**
     * 
     */
    package com.ray.ch05;
    
    /**
     * @Package:com.ray.ch05
     * 
     * @TODO 测试
     * 
     * @date 2015 10 30
     * 
     * @time 11:42:19
     * 
     * @author JMSCADMIN
     * 
     * @version 1.0
     */
    public class Test {
    
    }
    
    class Vehicle {
    }
    
    class Car extends Vehicle {
    }
    
    class BMW extends Car {
    }
    

    车满足is-a交通工具这个关系,BMW满足is-a车这种关系


    车是由轮子、车门等组合成的。

    /**
     * 
     */
    package com.ray.ch05;
    
    /**
     * @Package:com.ray.ch05
     * 
     * @TODO 测试
     * 
     * @date 2015 10 30
     * 
     * @time 11:42:19
     * 
     * @author JMSCADMIN
     * 
     * @version 1.0
     */
    public class Test {
    
    }
    
    class Door {
    }
    
    class Wheel {
    }
    
    class Car {
    	private Door leftDoor;
    	private Door rightDoor;
    	private Wheel leftForwardWheel;
    	private Wheel leftBackwardWheel;
    	private Wheel rightForwardWheel;
    	private Wheel rightBackwardWheel;
    
    }
    

    车和轮子、门等满足车是由xxx组成的这种关系。


    总结:这一章节简单讨论了如何在聚合与继承之间选择。



    这一章节就到这里,谢谢。

    -----------------------------------

    目录


    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    外观模式
    装饰器模式
    eclipse在运行main方法时在console里面报内存溢出的错误解决办法
    windows7安装node
    Eclipse-低版本离线集成svn步骤
    IDEA-JetBrains产品永久破解
    Java对字符串使用MD5进行加密(亲测有效)
    windows下的java项目打jar分别编写在windows与linux下运行的脚本( 本人亲测可用!)
    在linux中运行main方法所在的java类(亲测有效!!!)
    linux常用命令
  • 原文地址:https://www.cnblogs.com/raylee2007/p/4944459.html
Copyright © 2011-2022 走看看