面向对象思想编程中的继承体系中,关于继承,子类继承父类,父类一旦改变会影响到子类,这其实是不灵活的表现,而且继承的越频繁越不好维护,子类与父类有依赖关系存在,而(合成聚合复用原则)的出现,很好的 去改善了继承中这种不灵活性

合成聚合复用原则:的定义就是为了改善继承体现中的,依赖性,不灵活性;

关于合成聚合复用原则:
聚合指的是弱包含关系:例如(人属于人群的一部分,而人不包含了人群)
合成指的是强包含关系:例如(人的手臂属于这个人的一部分,而这个人也包含了这个人的手臂)

以下举例实现:


package com.oop.demo2.person;

import com.oop.demo2.Thing;

/**
 * 抽象出一个人类抽象类
 * @author Liudeli
 *
 */
public abstract class Person {

    /**
     * 抽象出一个人的拿东西成为
     */
    public abstract void take(Thing thing);

}
package com.oop.demo2;

/**
 * 抽象出事物抽象类(包含了世界上一起事物)
 * @author Liudeli
 *
 */
public abstract class Thing {

    /**
     * 返回事物名称即可
     * @return
     */
    public abstract String showName();

}
package com.oop.demo2.person;

import com.oop.demo2.Thing;

/**
 * 定义具体男人对象
 * @author Liudeli
 *
 */
public class ManPerson extends Person{

    public void take(Thing thing) {
        System.out.println("男人拿着:" + thing.showName());
    }

}
package com.oop.demo2.person;

import com.oop.demo2.Thing;

/**
 * 定义一个女人对象
 * @author Liudeli
 *
 */
public class WomanPerson extends Person{

    public void take(Thing thing) {
        System.out.println("女人拿着:" + thing.showName());
    }

}
package com.oop.demo2;

/**
 * 定义天堂雨伞具体对象
 * @author Liudeli
 *
 */
public class TiantangUmbrella extends Thing{

    public String showName() {
        return "天堂雨伞";
    }
}
package com.oop.demo2;

/**
 * 小米手机具体对象
 * @author Liudeli
 *
 */
public class MIPhone extends Thing{

    public String showName() {
        return "小米手机";
    }

}
package com.oop.demo2;

/**
 * 定义LV钱包具体对象
 * @author Liudeli
 *
 */
public class LVWallet extends Thing{

    public String showName() {
        return "钱包";
    }

}
package com.oop.demo2;

/**
 * 定义苹果耳机具体对象
 * @author Liudeli
 *
 */
public class AppleHeadphones extends Thing {

    public String showName() {
        return "苹果耳机";
    }

}
/**
 * 测试程序(合成聚合复用原则)
 * @author Liudeli
 *
 */
public class Main {

    public static void main(String[] args) {

        Person man = new ManPerson();
        Person woman = new WomanPerson();

        man.take(new MIPhone());
        man.take(new LVWallet());

        woman.take(new AppleHeadphones());
        woman.take(new TiantangUmbrella());

    }

}

运行结果:
这里写图片描述


Project结构图:
这里写图片描述


这里写图片描述


谢谢大家的观看,更多精彩技术博客,会不断的更新,请大家访问,
刘德利CSDN博客, http://blog.csdn.net/u011967006