package designpattern.composite;public abstract class Target { private String name;// 名称 public abstract void add(Target target);// 增加节点 public abstract void remove(Target target);// 删除节点 public abstract void move();// 移动 public abstract void attack();// 攻击 public String getName() { return name; } public void setName(String name) { this.name = name; }}
package designpattern.composite;public class Player extends Target { private String name; public Player(String name) { super(); this.name = name; } @Override public void move() { System.out.println("[" + name + "]正在移动"); } @Override public void attack() { System.out.println("[" + name + "]发动攻击"); } @Override public void add(Target target) { } @Override public void remove(Target target) { } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "Player [name=" + name + "]"; }}
package designpattern.composite;import java.util.ArrayList;import java.util.List;public class Team extends Target { List<Target> team = new ArrayList<>(); @Override public void add(Target target) { team.add(target); System.out.println(target.getName() + "加入队伍"); } @Override public void remove(Target target) { team.remove(target); System.out.println(target.getName() + "离开队伍"); } @Override public void move() { System.out.println(teamMembers() + "组成的队伍正在移动"); } @Override public void attack() { System.out.println(teamMembers() + "组成的队伍发动攻击"); } private String teamMembers() { StringBuffer stringBuffer = new StringBuffer(); stringBuffer.append("["); for (Target target : team) { stringBuffer.append(target.getName() + " "); } stringBuffer.append("]"); return stringBuffer.toString(); }}
package designpattern.composite;public class Client { public static void main(String[] args) { Player captainAmerica = new Player("美国队长"); captainAmerica.move(); captainAmerica.attack(); System.out.println("----------复联成立----------"); Player ironMan = new Player("钢铁侠"); Player hulk = new Player("绿巨人"); Team team = new Team(); team.add(captainAmerica); team.add(ironMan); team.add(hulk); team.move(); team.attack(); System.out.println("----------发生矛盾--------"); team.remove(ironMan); team.move(); team.attack(); }}
[美国队长]正在移动[美国队长]发动攻击----------复联成立----------美国队长加入队伍钢铁侠加入队伍绿巨人加入队伍[美国队长 钢铁侠 绿巨人 ]组成的队伍正在移动[美国队长 钢铁侠 绿巨人 ]组成的队伍发动攻击----------发生矛盾--------钢铁侠离开队伍[美国队长 绿巨人 ]组成的队伍正在移动[美国队长 绿巨人 ]组成的队伍发动攻击
原文链接:http://www.cnblogs.com/imoqian/p/10974504.html
本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728