设计模式之 --- 工厂方法模式(Factory Method)

1. 定义: 定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method 使一个类的实例化延迟到其子类。

产品: 

接口:public interface Product {

        void show ();

}

产品1: class Product1 implements Product {

        public void show() {

                System.out.println("this is the product 1");

        }

}

产品2: class Product1 implements Product {

        public void show() {

                System.out.println("this is the product 2");

        }

}

产品工厂:

接口: public interface CreateFactory {

        Product create();

}

产品1工厂:class Product1Factory implements CreateFactory{

        @Override

        public Product create() {

                return new Product1();

        }

}

产品2工厂:class Product2Factory implements CreateFactory {

        @Override

        public Product create() {

                return new Product2();

        }

}

使用:

public class Test {

        public static void main(String[] args) {

                CreateFactory p1f = new Product1Factory();

                CreateFactory p2f = new Product2Factory();

                p1f.create(); // 产品1工厂创建产品

                p2f.create(); // 产品2工厂创建产品

        }

}


优点:工厂模式可以说是简单工厂模式的进一步抽象和拓展,在保留了简单工厂的封装优点的同时,让扩展变得简单,让继承变得可行,增加了多态性的体现。

缺点:系统类的个数将成对增加, 增加系统编译开销。增加抽象层和理解难度,增加复杂度,一个工厂只能生产一种产品,当前产品需要更换的时候还是需要修改相应的代码。

你可能感兴趣的:(设计模式之 --- 工厂方法模式(Factory Method))