类别:
Structual Pattern
问题:
方案:
示例:
import java.util.ArrayList; import java.util.List; public class CompositePatternDemo { public static void main(String[] args) { Body sun = new Body("太阳", "恒星", 1392000000); Body mercury = new Body("水星", "行星", 4878000 ); Body venus = new Body("金星", "行星", 12103600 ); Body earth = new Body("地球", "行星", 12756300); Body moon = new Body("月球", "卫星", 3476280); Body mars = new Body("火星", "行星", 6794000); Body jupiter = new Body("木星", "行星", 142984000); Body saturn = new Body("土星", "行星", 120536000); Body saturnMoon1 = new Body("土卫一", "行星", 392000); Body saturnMoon2 = new Body("土卫二", "行星", 500000); Body uranus = new Body("天王星", "行星", 51120000); Body neptune = new Body("海王星", "行星", 49528000); sun.add(mercury); sun.add(venus); sun.add(earth); sun.add(mars); sun.add(jupiter); sun.add(saturn); sun.add(uranus); sun.add(neptune); earth.add(moon); saturn.add(saturnMoon1); saturn.add(saturnMoon2); System.out.println(sun); for (Body planet : sun.getSubLevelList()) { System.out.println(planet); for (Body satellite : planet.getSubLevelList()) { System.out.println(satellite); } } } } class Body { private String name; private String level; private int diameter; private List<Body> subLevelList; public Body(String name, String level, int diameter) { this.name = name; this.level = level; this.diameter = diameter; subLevelList = new ArrayList<Body>(); } public void add(Body e) { subLevelList.add(e); } public void remove(Body e) { subLevelList.remove(e); } public List<Body> getSubLevelList() { return subLevelList; } @Override public String toString() { return "Body [name=" + name + ", level=" + level + ", diameter=" + diameter + "]"; } }
Body [name=太阳, level=恒星, diameter=1392000000] Body [name=水星, level=行星, diameter=4878000] Body [name=金星, level=行星, diameter=12103600] Body [name=地球, level=行星, diameter=12756300] Body [name=月球, level=卫星, diameter=3476280] Body [name=火星, level=行星, diameter=6794000] Body [name=木星, level=行星, diameter=142984000] Body [name=土星, level=行星, diameter=120536000] Body [name=土卫一, level=行星, diameter=392000] Body [name=土卫二, level=行星, diameter=500000] Body [name=天王星, level=行星, diameter=51120000] Body [name=海王星, level=行星, diameter=49528000]
应用:
不足:(
优化:)
标签:Body,diameter,name,level,Composite,Pattern,add,行星 From: https://www.cnblogs.com/zno2/p/6694831.html