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.你希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象。
阅读(1993) | 评论(0) | 转发(0) |