interface Dog{
void bark();
}
public class Hound implements Dog{
public void bark(){
System.out.println("Hound Bark");
}
}
繼承的方式修改bark()
public class BigHound extends Hound{
public void bark(){
System.out.println("Big Hound Bark");
}
}
裝飾者模式修改bark()
public class SmallDog implements Dog{
private Dog dog;
public SmallDog(Dog dog) {
this.dog = dog;
}
public void bark(){
System.out.println("Small Dog");
dog.bark();
}
}
動態代理模式
final Dog dog = new Hound();
Dog proxyDog = (Dog)Proxy.newProxyInstance(
dog.getClass().getClassLoader(),
dog.getClass().getInterface(),
new InvocationHandler(){
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
if("run".equals(method.getName())) {
System.out.println("Proxy Dog");
return null;
}
}
}
);
沒有留言:
張貼留言