简单工厂方法
pizzastore这个类用来制作pizza(获得pizza对象并进行各种流程)
简单工厂类,用if——else制造对象
pizza类,有制作pizza的各种方法
具体的pizza类,继承pizza类
为什么要有简单工厂。如果没有工厂,那么需要在pizzastore里面new具体的pizza对象,这样就依赖具体的实现了。所以将pizza进行抽象,这样就不依赖于实现
核心就是不依赖
类图(类似于下面这个)
这里pizzastore相当于客户端逻辑的一部分(因为拿到对象还加工了一下,所以用pizzastore进行了包装。关键技术,将factory作为成员在store类里面
工厂方法模式
实例化的两个工厂
pizza类
pizza的具体实现类分为两种
NY风味
Chicago风味
简而言之,工厂方法将创建者接口也抽象化,让子类来决定创建什么类。
意思就是使用哪一个子类就创建哪一种对象(这里在客户端就直接使用子类了 )不在依赖参数的传递。
这样便于扩展产品,如果有新的产品,不用修改工厂类的代码。
抽象工厂模式
抽象工厂模式是在工厂方法的基础上进行的,主要是为了处理产品族的问题,就是一个工厂可能要生产一套产品,比如,车要生产轮子,窗户等等。
这个时候每一个工厂就可以用来生产一个产品
说白了,就是工厂方法的产品变多了。
抽象工厂的一些缺点:
增加新的工厂很方便,但是增加新的产品不符合开闭原则。
增加产品不符合开闭原则