先说一下简单工厂,简单工厂其实不是一个设计模式,只是一种编程习惯。
简单工厂是把实例化对象的部分抽离出来,封装变化的部分,供多个地方调用。以宠物店为例:
public class PetShop {
public Animal buyPet(String animalName){
Animal animal = SimpleAnimalFactory.createAnimal(animalName);
//宠物介绍
animal.getIntroduceInfo();
//叫一声
animal.getVoice();
return animal;
}
}
//定义一个简单工厂,返回一个Animal的接口
public class SimpleAnimalFactory {
public static Animal createAnimal(String animalName){
Animal animal = null;
if (Objects.equals(animalName,"dog")){
animal = new Dog();
}else if(Objects.equals(animalName,"cat")){
animal = new Cat();
}else if(Objects.equals(animalName,"rabbit")){
animal = new Rabbit();
}
return animal;
}
}
public class Dog extends Animal{
@Override
public String getVoice() {
return "汪汪汪";
}
}
public class Cat extends Animal {
@Override
public String getVoice() {
return "喵喵喵";
}
}
public class Rabbit extends Animal {
@Override
public String getVoice() {
return "biu~biu~biu~";
}
}