简单工厂模式又称为静态工厂方法模式,它用来定义一个具体的工厂类来创建一些类的实例,而这些被创建的类都应该有一个共同的父类,这样就可以专注于抽象。
如老虎,鹦鹉,海豚都是动物类的实例。
当我们在程序的客户端要使用这些动物的具体实例时,就需要生成各个动物的实例对象。
当使用了简单工厂模式的时候,客户端不再负责对象的创建,只负责对象的调用。
1,所有动物类的接口
package joeho.net.csdn.blog.SimpleFactory;
public interface Animal {
public void eat();
}
2,老虎类
package joeho.net.csdn.blog.SimpleFactory;
public class Tiger implements Animal{
public void run() {
System.out.println("老虎会跑");
}
public void eat() {
System.out.println("老虎会吃");
}
}
3,海豚类
package joeho.net.csdn.blog.SimpleFactory;
public class Doiphin implements Animal{
public viod swim() {
System.out.println("海豚会游泳");
}
public void eat() {
System.out.println("海豚会吃");
}
}
4,鹦鹉类
package joeho.net.csdn.blog.SimpleFactory;
public class Parrot implements Animal {
public void fly() {
System.out.println("鹦鹉会飞");
}
public void eat() {
System.out.println("鹦鹉会吃");
}
}
5,工厂类
package joeho.net.csdn.blog.SimpleFactory;
public class AnimalFactory {
public static Animal creatAnimal(String name) {
/*
Class a = Class.forName(name);
Animal anm = (Animal)a.newInstance();
return anm;
*/
if("Tiger".equals(name))
{
return new Tiger();
}else if("Doiphin".equals(name))
{
return new Doiphin();
}else if("Parrot".equals(name))
{
return new Parrot();
}
}
}
5,客户端调用代码
Animal anm = AnimalFactory .creatAnimal("Tiger");
anm.run();
anm.eat();
简单工厂模式的缺点:
所有对象的创建和初始化都需要在工厂类中实现,当创建的对象很多时,工厂类将会变得异常庞大,不利于代码的维护。