並且對其新添加功能,
重點在於Employee.java的第七行,
除了複寫walk的method,還添加了
run的method在裡面.
Human.java
package com.test.decoratorpattern; public interface Human { void walk(String msg); }
Man.java
package com.test.decoratorpattern; public class Man implements Human{ @Override public void walk(String msg) { System.out.println("class is Man , "+msg); } }
ManDecorator.java
package com.test.decoratorpattern; public class ManDecorator implements Human { protected Human decoratedHuman; public ManDecorator(Human decoratedHuman) { this.decoratedHuman = decoratedHuman; } public void walk(String msg) { decoratedHuman.walk("class is ManDecorator:"+msg); } }
Employee.java
package com.test.decoratorpattern; public class Employee extends ManDecorator { public Employee(Human decoratedHuman) { super(decoratedHuman); // TODO Auto-generated constructor stub } @Override public void walk(String msg) { decoratedHuman.walk(msg); run(decoratedHuman); } private void run(Human decoratedHuman) { System.out.println("class is Employee: Run"); } }
testDecorator.java
package com.test.decoratorpattern; public class testDecorator { public static void main(String[] args) { // TODO Auto-generated method stub Human man = new Man(); man.walk(" man "); Human employee = new Employee(new Man()); employee.walk(" employee "); } }
Console
class is Man , man class is Man , employee class is Employee: Run
沒有留言:
張貼留言