以静态代理模式为例:
如果在代理类中这么写,不够灵活:
改成:
public Interface SuperStar
{
public void Sing();
}
public class SuperStarLiu
{
@Override
public void Sing()
{
System.out.println("SuperStarLiu唱歌");
}
}
public class SuperStarZhou
{
@Override
public void Sing()
{
System.out.println("SuperStarLZhou唱歌");
}
}
public class Agent implements SuperStar
{
public SuperStar target;
public Agent(SuperStar target)//构造方法,这里使用接口就使得你既可以传入SuperStarLiu,也可以传入SuperStarZhou,相当灵活
{
this.target=target;
}
public void Sing()
{
target.sing();
}
}
Agent agent1 =new Agent(new SuperStarLiu());
agent1.Sing();
Agent agent2 =new Agent(new SuperStarZhou());
agent2.sing();
灵活性就体现在