一、工厂方法模式:
1.简单工厂模式:
(1).抽象产品:定义了产品的规范,描述了产品的主要特性和功能
(2).具体产品:实现或继承抽象产品的子类
(3).具体工厂:提供了创建产品的方法,调用者通过该方法来获取产品
所有产品都共有一个工厂,如果新增产品,则需要修改代码,违反开闭原则,是一种编程习惯,可以借鉴这种编程思路
2.工厂方法模式
工厂方法模式的主要角色:
(1).抽象工厂(Abstract Factory):提供了创建产品的接口,调用者通过它访问具体工厂的工厂方法来创建产品
(2).具体工厂(Concrete Factory):主要是实现抽象工厂中的抽象方法,完成具体产品的创建
(3).抽象产品(Product):定义了产品规范,描述了产品的主要特性和功能
(4).具体产品(Concrete Product):实现了抽象产品角色所定义的接口,由具体工厂来创建,它同具体工厂之间一一对应
给每个产品都提供了一个工厂,让工厂专门负责对应产品的生产,遵循开闭原则,项目中用得最多
3.抽象工厂模式:
工厂方法模式只考虑生产同等级产品,抽象工厂可以处理多等级产品的生产
抽象工厂模式是工厂方法模式的升级版本,工厂方法模式只生产一个等级的产品,而抽象工厂模式可以生产多个等级的产品。一个超级工厂创建其他工厂,该超级工厂又称为其他工厂的工厂
如果有多个维度的产品需要配合生产时,优先建议使用抽象工厂,一般企业开发中使用较少
二、策略模式:
该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响算法的客户;通过对算法的封装,把使用算法的责任和算法的实现分割开来,并委派给不同的对象对这些算法进行管理
策略模式的主要角色如下:
抽象策略(Strategy)类:这是一个抽象角色,通常由一个接口或抽象类实现。此角色给出所有的具体策略类所需的接口。
具体策略(Concrete Strategy)类:实现了抽象策略定义的接口,提供具体的算法实现或行为。
环境(Context)类:持有一个策略类的引用,最终给客户端调用。