策略模式
public class StrategyTest {
public static void main(String[] args) {
Normal normal = new Normal();
normal.diaplay();
normal.attack();
normal.move();
}
}
interface Moveable {
void move();
}
interface Attack {
void attack();
}
abstract class Z {
public Z() {
}
abstract void diaplay();
Moveable moveable;
Attack attack;
abstract void move();
abstract void attack();
public Moveable getMoveable() {
return moveable;
}
public void setMoveable(Moveable moveable) {
this.moveable = moveable;
}
public Attack getAttack() {
return attack;
}
public void setAttack(Attack attack) {
this.attack = attack;
}
public Z(Moveable moveable, Attack attack) {
this.moveable = moveable;
this.attack = attack;
}
}
class Normal extends Z {
public Normal() {
super(() -> System.out.println("一步一步走"), () -> System.out.println("打"));
}
@Override
void diaplay() {
System.out.println("正常");
}
@Override
void move() {
moveable.move();
}
@Override
void attack() {
attack.attack();
}
}
class Step implements Moveable {
@Override
public void move() {
System.out.println("一步一步走");
}
}