1.简单工厂模式(静态工厂模式)
工厂类:
public class SimpleAnimalFactory {
public static Animal getAnimalInstance(String type) throws InstantiationException, IllegalAccessException{
if ("dog".equals(type)) {
return Dog.class.newInstance();
}else if ("cat".equals(type)) {
return Cat.class.newInstance();
}else {
System.out.println("找不到对应类");
return null;
}
}
}
父类:
package model.parent;
public interface Animal {
public void eat();
}
子类:
package model.son;
import model.parent.Animal;
public class Cat implements Animal {
@Override
public void eat() {
System.out.println("喵喵吃鱼");
}
}
package model.son;
import model.parent.Animal;
public class Dog implements Animal {
@Override
public void eat() {
System.out.println("狗狗吃骨头");
}
}
测试类:
package model.test;
import model.factory.SimpleAnimalFactory;
import model.parent.Animal;
public class AnimalTest {
public static void main(String[] args) {
try {
Animal dog = SimpleAnimalFactory.getAnimalInstance("dog");
Animal cat = SimpleAnimalFactory.getAnimalInstance("cat");
if (dog != null) {
dog.eat();
}
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
违背开闭原则,当需要新增子类时,需要更改工厂类.