您的位置:首页 > 编程语言 > Java开发

合成聚合复用原则(设计模式_23)

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

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

关于合成聚合复用原则:

聚合指的是弱包含关系:例如(人属于人群的一部分,而人不包含了人群)

合成指的是强包含关系:例如(人的手臂属于这个人的一部分,而这个人也包含了这个人的手臂)

以下举例实现:

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
4000
MIPhone());
man.take(new LVWallet());

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

}

}


运行结果:



Project结构图:





谢谢大家的观看,更多精彩技术博客,会不断的更新,请大家访问,

刘德利CSDN博客, http://blog.csdn.net/u011967006
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息