在面向对象思想编程中的继承体系中,关于继承,子类继承父类,父类一旦改变会影响到子类,这其实是不灵活的表现,而且继承的越频繁越不好维护,子类与父类有依赖关系存在,而(合成聚合复用原则)的出现,很好的 去改善了继承中这种不灵活性
合成聚合复用原则:的定义就是为了改善继承体现中的,依赖性,不灵活性;
关于合成聚合复用原则:
聚合指的是弱包含关系:例如(人属于人群的一部分,而人不包含了人群)
合成指的是强包含关系:例如(人的手臂属于这个人的一部分,而这个人也包含了这个人的手臂)
以下举例实现:
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