-
__工厂__处理创建对象的细节
-
通过静态方法创建对象叫做__静态工厂__
静态工厂的优点是不需要创建工厂对象实例
缺点是__不能通过继承的方式改变创建方法的行为__
-
简单工厂不是一种设计模式, 而是一种编程习惯
示例
public class SimplePizzaFactory { public Pizza createPizza(String type) { Pizza pizza = null; if (type.equals("cheese")) { pizza = new CheesePizza(); } else if (type.equals("pepperoni")) { pizza = new PepperoniPizza(); } else if (type.equals("clam")) { pizza = new ClamPizza(); } else if (type.equals("veggie")) { pizza = new VeggiePizza(); } return pizza; } }
-
工厂方法
(1) 简单工厂中用一个对象负责所有具体类的实例化, 工厂方法是在基类中定义一个抽象方法用于创建实例对象, 在派生类中实现这个方法. 这个方法的返回值是一个具体的产品.
(2) 工厂方法模式通过让子类决定该创建的对象是什么, 来达到将对象创建的过程封装的目的
(3) 工厂方法通常需要一个产品接口(抽象类), 一个创建者接口(抽象类), 这两个类是平级的
(4) 定义
定义了一个创建对象的接口, 但是由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类
(5) 示例
public abstract class PizzaStore { abstract Pizza createPizza(String item); public Pizza orderPizza(String type) { Pizza pizza = createPizza(type); System.out.println("--- Making a " + pizza.getName() + " ---"); pizza.prepare(); pizza.bake(); pizza.cut(); pizza.box(); return pizza; } }
其中, createPizza()就是工厂方法, 具体实现交给派生类完成
-
工厂的优点是__将创建对象的代码集中在一个对象或方法中, 可以避免代码中的重复, 更方便维护__
-
设计原则
要依赖__抽象__, 不要依赖具体类
具体操作原则
1° 变量不要持有具体类的引用(可以考虑使用工厂方法避免new的使用)
2° 不要让类派生自具体类
3° 不要覆盖基类中已实现的方法, 基类中已实现的方法, 应该由所有的子类共享
-
抽象工厂
(1) 抽象工厂提供__一组方法__用于创建__一系列相关产品__的家族
(2) 抽象工厂中的方法常常以工厂方法的形式实现
-
工厂方法模式和抽象工厂模式的区别
(1) 工厂方法使用的是__继承__, 抽象工厂使用的是__对象的组合__
(2) 当需要创建产品家族或者想让相关产品集合起来的时候, 应该使用抽象工厂; 而工厂方法只会创建一种产品
一个抽象工厂可以包含很多个工厂方法
chapter04_工厂模式
猜你喜欢
转载自blog.csdn.net/captxb/article/details/87899903
今日推荐
周排行