Chinaunix首页 | 论坛 | 博客
  • 博客访问: 110701
  • 博文数量: 19
  • 博客积分: 419
  • 博客等级: 一等列兵
  • 技术积分: 265
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-03 20:13
文章分类

全部博文(19)

文章存档

2012年(6)

2011年(13)

分类: Java

2011-11-17 15:09:08

1.静态主调用方法

package com;

import java.util.List;

public class Test {

 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub

  Employer pm = new ProjectManager("项目经理");
  Employer pa = new ProjectAssistant("项目助理");
  Employer programmer1 = new Programmer("程序员1");
  Employer programmer2 = new Programmer("程序员2");
  
  pm.add(pa);
  pm.add(programmer1);
  pm.add(programmer2);
  
  List ems = pm.getEmployers();
  
  System.out.println(""+ems.toArray());
  
  for(int i=0;i  {
   System.out.println(((Employer)ems.get(i)).getName()); 
  }
 }

}

2.抽象类和抽象方法——父类

package com;
import java.util.List;
public abstract class Employer {
 private String name;
 public String getName() {
  return this.name;
 }
 public void setName(String name) {
  this.name = name;
 }
 
 public abstract void add(Employer employer);
 
 public abstract void delete(Employer employer);
 
 public List employers;
 
 public void printInfo()
 {
  System.out.println(name);
  
 }
 
 public List getEmployers()
 {
  return this.employers;
 }
}
3。抽象的继承类——子类
(1)
package com;
import java.util.ArrayList;
public class ProjectManager extends Employer {

 public ProjectManager(String name) {
  super();
  
  employers = new ArrayList();
  this.setName(name);
  // TODO Auto-generated constructor stub
 }
 @Override
 public void add(Employer employer) {
  // TODO Auto-generated method stub
  employers.add(employer);
 }
 @Override
 public void delete(Employer employer) {
  // TODO Auto-generated method stub
   employers.remove(employer);
 }
}
(2)
package com;
public class ProjectAssistant extends Employer {

 public ProjectAssistant(String name) {
  super();
  
  employers = null;
  
  this.setName(name);// = name;
  
  // TODO Auto-generated constructor stub
 }
 @Override
 public void add(Employer employer) {
  // TODO Auto-generated method stub
 }
 @Override
 public void delete(Employer employer) {
  // TODO Auto-generated method stub
 }
}
(3)

package com;

public class Programmer extends Employer {


 public Programmer(String name) {
  super();
  
  employers = null;
  
  this.setName(name);
  // TODO Auto-generated constructor stub
 }

 @Override
 public void add(Employer employer) {
  // TODO Auto-generated method stub

 }

 @Override
 public void delete(Employer employer) {
  // TODO Auto-generated method stub

 }

}

 

输出:

[Ljava.lang.Object;@14318bb
项目助理
程序员1
程序员2

4.总结

(1)组合模式主要用abstract来实现,设置父类abstract属性和abstract方法

(2)应用场景:

    1.你想表示对象的部分-整*层次结构。    2.你希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象。
阅读(1902) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~