网站如何做邮箱订阅,昆明网站建设哪个公司好,沈阳网站选禾钻科技,企查查免费查询入口1、工厂方法模式意图#xff1a; 定义一个用于创建对象的接口#xff0c;让子类决定实例化哪一个类。Factory Method使一个类的实例化延迟到其子类。 工厂方法模式用于为属于同一类别的产品定义对应的具体工厂类#xff0c;并将具体工厂类开放给用户类来使用。 2、应用场景 定义一个用于创建对象的接口让子类决定实例化哪一个类。Factory Method使一个类的实例化延迟到其子类。 工厂方法模式用于为属于同一类别的产品定义对应的具体工厂类并将具体工厂类开放给用户类来使用。 2、应用场景 考虑一个榨汁机的应用场景。榨汁机可以用来制作苹果汁、西瓜汁、橘汁等即榨汁机可以用来制作水果汁。但是夏天的冷饮店中为了提高制作水果汁的效率和防止味道互串等情况可能需要分别准备三个水果榨汁机分别用来生产苹果汁、西瓜汁、橘汁等。 3、工厂方法模式类图 角色 Product定义工厂方法所创建对象。如场景描述中的果汁。ConcreteProduct实现Product中的接口定义具体化的产品。如场景描述中的苹果汁、西瓜汁、橘汁等。Creator用于声明创建Product类型对象的工厂方法。如场景中的榨汁机这一概念。ConcreteCreator实现Creator中的工厂方法专门用于产生具体的产品ConcreteProduct。如场景中的苹果榨汁机、西瓜榨汁机等。协作 Creator依赖于它的子类来定义工厂方法。4、适用性 工厂方法模式跟工厂模式类似其中工厂方法模式适合于构造同属于同一个类别的不同产品所有的产品属于同一个系列中。 5、实例 5.1 实例类图 说明店员Waiter使用不同的榨汁机来制作不同的水果汁进而销售给顾客。 5.2 Waiter类 除了用户类Waiter类之外其他的类定义明了故仅提供用户类。 1 public class Waiter{
2
3 public void sell(Juicer juicer){
4 Juice juice juicer.MakeJuice(); //使用传入的特定的榨汁机来生产特定的水果汁
5
6 //卖给顾客收钱
7 }
8
9 } 6、特点 连接平行的类层次——工厂方法的每个子类用于产生平行的不同的具体产品工厂子类同具体产品平行关系每种新类型产品都需要对应一个新类型产品的工厂类添加新类型产品时面向的是抽象产品接口Product添加新类型产品的工厂类时面向的是抽象工厂接口Creator在用户类需要添加新类型的产品NewProduct时只需要添加对应的新工厂类NewProductFactory不需要修改已经存在的其他类。在用户类需要使用新产品时只需要调用新工厂类NewProductFactory来获取新产品即可。符合开闭原则。【注开闭原则——软件开发应该面向扩展而非修改。】 7、简单工厂VS工厂方法 简单工厂不满足开闭原则。在需要添加新类型产品时除添加新产品类还需要修改简单工厂模式中的工厂类为工厂类中创建对象的静态方法添加新的选择项。 工厂方法满足开闭原则。在需要添加新类型产品时除添加新产品类还需要继承抽象工厂类创建新类型产品对应的工厂类。 转载于:https://www.cnblogs.com/-crazysnail/p/3924125.html