* 简单工厂模式-->又称为“静态工厂方法模式”
* 工厂类负责创建某些类的实例!
* 弊端:
* 如有新的类增加,需要在工厂类中定义静态方法产生该类的实例,不利于后期维护!
* 代码量要增加
public class PatternDemo {
public static void main(String[] args) {
//没有使用简单工厂模式之前
Cat c=new Cat();
c.eat();
c.sleep();
System.out.println("-----------");
Dog d=new Dog();
d.eat();
d.sleep();
System.out.println("---------------------");
//如果有新的类增加,在工厂类提供具体的静态功能创建具体类的实例
Animal a=AnimalFactory.createAnimal("cat");//编译看左运行看右
a.eat();
a.sleep();
System.out.println("---------");
a=AnimalFactory.createAnimal("dog");
a.eat();
a.sleep();
}
}
public class Animal {
public void eat() {
System.out.println("eat");
}
public void sleep() {
System.out.println("sleep");
}
}
public class Cat extends Animal {
@Override
public void eat() {
System.out.println("猫吃鱼");
}
@Override
public void sleep() {
System.out.println("猫趴着睡");
}
}
//动物工厂类
public class AnimalFactory {
//私有化:外界不能创建该工厂类对象
private AnimalFactory() {}
//负责具体类的对象的创建--->方法(静态)
//提供功能
public static Animal createAnimal(String type) {
if("dog".equals(type)) {
return new Dog();//Animal a=new Dog();
}else if("cat".equals(type)) {
return new Cat();
}else if("pig".equals(type)) {
return new Pig();
}else {
return null;
}
}
}
public class Pig extends Animal {
@Override
public void eat() {
System.out.println("吃白菜");
}
@Override
public void sleep() {
System.out.println("趴着睡");
}
}



