解决问题
对象和行为自由组合。当不同的对象具有多种可枚举的行为,且不同行为的对象可被描述为不同的具体的对象,不同的行为与对象结合将产生大量具有差异性具体对象,为了防止对这些具体对象的枚举,将差异性的行为与对象本身分离出来。
应用场景
比如游戏里面的英雄的装备与动作;描述不同汽车的行为(汽、油、电等不同发动机的运行方式,见参考)。当需要定义大量(自由组合而成的)相似对象时,可以考虑一下用这种方式。
原理图
image示例
假台国家队要训练运动员,运动项目有各种各样。这时,我们就可以将运员的运动项目和运动员本身分开,而不用定义各种样的运动员。
public interface Sport {
public void exercise();
}
public class Run implements Sport {
public void exercise() {
System.out.print("run....");
}
}
public class Jump implements Sport {
public void exercise() {
System.out.print("jump");
}
}
@AllArgsConstructor
public class Athete {
private Sport sport;
public void train() {
sport.exercise();
}
public static void main(String[] args) {
new Athete(new Run()).train();
new Athete(new Jump()).train();
}
}
网友评论