Java编程算法基础---组合与聚合

 组合与聚合是类间的最常见的依赖关系。有时,可以只用组合或聚合来代替继承,弱化依赖关系,也可以通过组合或聚合模拟出多继承的效果(java不支持多继承)。

组合与聚合的其区别是:组合的对象在母体消亡时随同一起消亡,而聚合则不然。

 

举例: 战士和他的心脏是组合关系

    战士和他的步枪是聚合关系

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

通过继承ArrayList来解决:

 
package NO3;

import java.util.ArrayList;


class MyX extends ArrayList{
	
	public  boolean add(Object x){//通过覆盖ArrayList的add方法,来加入我们自己的逻辑
		                          //这种使用方式应当尽量避免
		
		//写具体的逻辑 相同长度的字符串只能加入两次
		
		
		return true;
	}
	
	
}
public class Test13 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
      MyX aMyX =new MyX();
      aMyX.add("123");
      aMyX.add("abcd");
      aMyX.add("234");
      aMyX.add("456");
      
		
	}

}

 

通过组合模式来解决:

package NO3;

import java.util.ArrayList;
//通过组合模式来过滤串

class Myx{
   private ArrayList lst = new ArrayList();
   //Myx对象消亡后,lst对象也随之消亡 	
	public void add(String x){
	   //处理过滤逻辑
	    
	   lst.add(x);

	}
	
}
public class Test14 {
	public static void main(String[] args) {
		// TODO Auto-generated method stub

	}

}


通过聚合模式来解决:


 

package NO3;
import java.util.ArrayList;
import java.util.List;
class MX{
	private List lst;//此处List是接口
	public MX(List lst){ //List采用外部注入的方式, 从构造方法中传入
	   this.lst = lst;
	}
	public void add(String x){
		//处理过滤逻辑
		lst.add(x);
	}
}
public class Test15 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		ArrayList a = new ArrayList(); 
		MX mx = new MX(a);//mx对象消亡后,仍有一个指针指向lst
		a.add("123");

	}

}


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值