public class SimpleFactoryAndStraregy {
public static void main(String[] args) {
Animal animal =AnimalFactory.createAnimal("cat");
animal.animalPlay();
}
}
class AnimalFactory{
public static Animal createAnimal(String animal){
switch(animal){
case "cat":
Cat cat = new Cat();
cat.setAnimalContext(new CatStrategy());
return cat;
}
return null;
}
}
abstract class Animal{
private String type;
StrategyOfAnimal strategyOfAnimal;
public String getType() {return type;}
public void setType(String type) {this.type = type;}
public StrategyOfAnimal getAnimalContext() {return strategyOfAnimal;}
public void setAnimalContext(StrategyOfAnimal animalContext) {this.strategyOfAnimal = animalContext;}
public void animalPlay(){
strategyOfAnimal.play();
}
}
class Cat extends Animal{
}
abstract class StrategyOfAnimal{
public abstract void play();
}
class CatStrategy extends StrategyOfAnimal{
@Override
public void play() {
System.out.println("我是一只猫,我在山顶上俯视我的臣民");
}
}