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

来源:互联网 发布:淘宝新店铺推广怎么写 编辑:程序博客网 时间:2024/04/29 10:41

 组合与聚合是类间的最常见的依赖关系。有时,可以只用组合或聚合来代替继承,弱化依赖关系,也可以通过组合或聚合模拟出多继承的效果(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 stubArrayList a = new ArrayList(); MX mx = new MX(a);//mx对象消亡后,仍有一个指针指向lsta.add("123");}}


 

 

0 0
原创粉丝点击