工厂方法模式

来源:互联网 发布:js保留三位小数 编辑:程序博客网 时间:2024/05/01 11:54

工厂方法模式


  • 工厂方法模式中抽象工厂类负责定义创建对象的接口,具体对象的创建工作由继承抽象工厂的具体类实现
/** * 抽象的动物类,里面有抽象的方法 */public abstract class Animal {    public abstract void eat();}
/** * 工厂类接口,里面有抽象的创造动物的方法 */public interface Factory {    public abstract Animal createAnimal();}
/** * 具体的猫类继承抽象动物类,重写抽象方法 */public class Cat extends Animal {    @Override    public void eat() {        System.out.println("猫吃鱼");    }}
/** * 猫工厂类实现工厂类并实现它的抽象方法,返回一个猫对象 */public class CatFactory implements Factory {    @Override    public Animal createAnimal() {        return new Cat();    }}
/** * 具体的狗类继承抽象动物类,重写抽象方法 */public class Dog extends Animal {    @Override    public void eat() {        System.out.println("狗吃肉");    }}
/** * 狗工厂类实现工厂类并实现它的抽象方法,返回一个狗对象 */public class DogFactory implements Factory {    @Override    public Animal createAnimal() {        return new Dog();    }}
/** * 测试类 */public class MyClass {    public static void main(String[] args) {        // 需求:我要只狗        Factory f = new DogFactory();        Animal a = f.createAnimal();        a.eat();        //需求:我要只猫        f = new CatFactory();        a = f.createAnimal();        a.eat();    }}

  • 优点:客户端不需要在负责对象的创建,从而明确了各个类的职责,如果有新的对象增加,只需要增加一个具体的类和具体的工厂类即可,不影响已有的代码,后期维护容易,增强了系统的扩展性

  • 缺点:需要额外的编写代码,增加了工作量

0 0