工厂方法模式笔记

定义

定义了一个创建对象的接口,让它的子类决定实例化哪个类。工厂方法让类的实例化推迟到子类中进行。

使用

一个工厂Factory接口,其中包含一个创建特定类的方法createProduce,这个方法由工厂接口的具体类来实现,每个实现类(如ConcreateFactoryA)会创建一个对应的,实现Product接口的具体类(如ProductA)并返回。

代码(Java)

// 产品接口
public interface Product {
    void method();
}
​
// 产品类A
public class ProductA implements Product {
    @Override
    public void method() {
        System.out.println("This is ProductA");
    }
}
​
// 产品类B
public class ProductB implements Product {
    @Override
    public void method() {
        System.out.println("This is ProductB");
    }
}
​
// 工厂接口
public interface Factory {
    Product createProduct();
}
​
// 生成产品A的工厂类
public class ConcreteFactoryA implements Factory {
    @Override
    public Product createProduct() {
        return new ProductA();
    }
}
​
// 生成产品B的工厂类
public class ConcreteFactoryB implements Factory {
    @Override
    public Product createProduct() {
        return new ProductB();
    }
}
​
// 测试类
public class Client {
    public static void main(String[] args) {
        Factory factory = new ConcreteFactoryA();
        Product product = factory.createProduct();
        product.method(); // 输出:This is ProductA
        
        factory = new ConcreteFactoryB();
        product = factory.createProduct();
        product.method(); // 输出:This is ProductB
    }
}

 

总结

将创建对象的代码集中在一个对象或方法中,可以避免代码中的重复,并且更方便以后的维护。

当增加产品时,只需要增加对应的产品和工厂类,而不需要修改现有的代码,符合开-闭原则。

同时也实现了针对接口编程,而不针对实现编程。

 

posted on 2017-05-22 18:01  _路上  阅读(135)  评论(0编辑  收藏  举报

导航