设计模式:工厂模式
三种工厂模式:简单工厂、工厂方法、抽象工厂。
1、简单工厂模式
引入工厂类,将我们要使用的类(下称“使用类“”)的初始化和功能进行分离。
工厂类中一般有一个静态方法,能够构造并初始化使用类的对象,然后就能使用静态方法返回的使用类的功能了。
工厂静态方法返回值为很多使用子类的基类,这样就能利用多态,根据传入工厂类静态方法的参数不同,初始化不同的使用类子类的对象。而这些参数可以写在配置文件里,待程序运行时再确定,就确保了在不修改代码情况下,依靠修改配置文件改变程序功能。
2、工厂方法模式
针对简单工厂模式,在增加使用类子类时,往往还是需要修改工厂类的程序代码,这违反了面向对象开闭原则,
工厂方法模式能够解决此问题。
工厂方法模式在简单工厂模式基础上,为工厂类增加了一个基类,然后基类下面有不同的工厂类子类,每一个子类负责一个使用类的创建工作。这样在增加新的使用类子类时,只需要同时增加一个工厂类子类,由于对工厂类的程序调用是基于工厂类基类的,所以只要新增加的工厂类子类实现或继承了工厂类基类,原来的程序代码就不需要修改。而具体初始化哪个工厂类子类,可以在配置文件里面配置。
3、抽象工厂模式
针对工厂方法模式,每一个使用类子类都对应一个工厂类子类,这样工厂类太多。抽象工厂模式将每一个工厂类子类对应多个使用类子类,这些子类是有关联的,他们组成一个子类组。
如下面一个例子,一个皮肤主题对应好多个样式相关联的控件,同一个主题下的所有控件属于一个控件组,由一个工厂类子类来负责创建: