1.定义一个接口和两个实现类
package com.klose.简单工厂;
public interface Animal {
void eat();
}
package com.klose.简单工厂;
public class Cat implements Animal {
@Override
public void eat() {
System.out.println("猫吃鱼");
}
}
package com.klose.简单工厂;
public class Dog implements Animal {
@Override
public void eat() {
System.out.println("狗吃肉");
}
}
2.工厂类:
package com.klose.简单工厂;
public class Factory {
private Factory(){}
public static Animal createAnimal (String name){
if ("cat".equals(name)){
return new Cat();
}else if ("dog".equals(name)){
return new Dog();
}else {
return null;
}
}
public static void main(String[] args) {
Animal cat = Factory.createAnimal("cat");
cat.eat();
Animal dog = Factory.createAnimal("dog");
dog.eat();
}
}
3.概述
简单工厂模式又叫静态工厂模式,它定义一个具体的工厂类负责创建一些类的实例(据说spring ioc就是用了这种模式)
优点:客户端不需要再负责对象的创建,从而明确了各个类的职责;
缺点:这个静态工厂类负责所有对象的创建,如果有新的对象增加,或者某些对象的创建方式不同,就需要不断修改代码,不利于维护。