本文共 1579 字,大约阅读时间需要 5 分钟。
关于设计模式,前面我们学习了单例设计模式,这篇再来学习一个工厂方法模式,在介绍工厂方法模式之前,我们来看一个简单工厂模式。工厂模式的最大优点就是客户端不需要再创建对象,工厂类中就帮你提前创建好了,直接通过工厂类名点方法调用就好。简单工厂模式又叫静态方法工厂模式,它定义了一个具体的工厂类来创建一些类的实例。
1.代码举例
在Eclipse下创建一个samplefactory包,然后下面创建以下几个类,代码如下。
Animal.java代码
package samplefactory;public abstract class Animal { public abstract void eat();}
AnimalFactory.java代码
package samplefactory;public class AnimalFactory { public static Dog createDog() { return new Dog(); } public static Cat createCat() { return new Cat(); }}
Cat.java 代码
package samplefactory;public class Cat extends Animal { @Override public void eat() { System.out.println("猫吃鱼"); }}
Dog.java代码
package samplefactory;public class Dog extends Animal { @Override public void eat() { System.out.println("狗吃肉"); }}
Test.java代码
package samplefactory;public class Test { public static void main(String[] args) { Dog d = AnimalFactory.createDog(); d.eat(); Cat c = AnimalFactory.createCat(); c.eat(); }}
运行下
狗吃肉猫吃鱼
看到AnimalFactory类中需要创建多个动物,我们优化下代码,用一个方法就可以包括上面dog和cat的创建过程。
package samplefactory;public class AnimalFactory { public static Animal create(String name) { if("dog".equals(name)) { return new Dog(); }else if("cat".equals(name)) { return new Cat(); }else { return null; } } }
修改下测试类
package samplefactory;public class Test { public static void main(String[] args) { Dog d = (Dog) AnimalFactory.create("dog"); d.eat(); Cat c = (Cat) AnimalFactory.create("cat"); c.eat(); }}
上面就是简单工厂模式,优点就是客户端不需要再负责对象的创建,从而明确了各个类的职责。缺点也很明显,这个静态工厂类负责所有对象的创建,如果有新对象增加,或者有些对象创建方式不同,就要不断地修改工厂类,不利于后期维护。下一篇,我们在这个基础上学习工厂方法模式,继续使用上面优点,避免缺点。
转载地址:http://vzows.baihongyu.com/