public class StrategyTest {
    public static void main(String[] args) {
        Animal dog = new Dog();
        dog.move();
        dog.setMoveable(new DogMove());
        dog.move();
    }
}

interface Moveable{
    void move();
}
interface Attackable{
    void attack();
}
class Runable implements Moveable{

    @Override
    public void move() {
        System.out.println("------ run -----");
    }
}

class DogMove implements Moveable{

    @Override
    public void move() {
        System.out.println("狗摇着尾巴移动");
    }
}

abstract class Animal{
    Moveable moveable;
    Attackable attackable;

    public Animal() {
    }

    public Animal(Moveable moveable, Attackable attackable) {
        this.moveable = moveable;
        this.attackable = attackable;
    }

    abstract public void display();
    abstract void move();
    abstract void attack();

    public Moveable getMoveable() {
        return moveable;
    }

    public void setMoveable(Moveable moveable) {
        this.moveable = moveable;
    }

    public Attackable getAttackable() {
        return attackable;
    }

    public void setAttackable(Attackable attackable) {
        this.attackable = attackable;
    }
}


class Dog extends Animal{
    public Dog() {
        super(new Runable(), null);
    }

    public Dog(Moveable moveable, Attackable attackable) {
        super(moveable, attackable);
    }

    @Override
    public void display() {
        System.out.println("------ 狗 ----------");
    }

    @Override
    void move() {
        moveable.move();
    }

    @Override
    void attack() {
        attackable.attack();
    }
}
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。