欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

我理解的工厂模式 设计模式 

程序员文章站 2024-01-23 20:34:34
...

首先,工厂模式可以分为两种: 工厂方法、抽象工厂。
其次,还有一种人们称之为简单工厂模式,其实谈不上叫模式,就是把一个创建对象的方法,提取出来,放到另外一个类中帮助实现,从设计角度上来讲,谈不上是模式

先说简单工厂模式的应用场景,如果一个对象的产生不仅仅是new一下就解决问题,比如需要根于不同状态产生不同实例,而这个状态标识又是动态的,则每次new的时候,都要通过if判断到底new那一个实例,这将造成代码的重复,放在一个简单工厂类中的时候,就可以避免重复编码,将产生同接口的不同实例。比如,在肯德基你可以吃汉堡,汉堡有鸡腿汉堡和鳕鱼堡,你把你要选得标识名称告诉肯德基,他就会给你你想要的汉堡,而不是他把鸡腿汉堡和鳕鱼堡都拿到你面前,你来选择(if else).

工厂方法其实是一种继承关系,一个抽象类工厂,里面有个方法是抽象的,用来生成用户需要的对象实例,然后抽象工厂的子类实现这个抽象方法,返回用户需要的对象实例,不同的抽象工厂子类返回不同的对象实例,这些实例实现同一个接口,属于继承关系,比如汉堡有麦当劳和肯德基,这两个对象都继承汉堡,抽象工厂是快餐店,有个抽象方法叫生产汉堡,肯德基的快餐店实例生成肯德基汉堡,麦当劳的快餐店生成麦当劳的汉堡

抽象工厂容易混淆为多个工厂方法, 抽象工厂用来生成一组对象,这组对象直接是组合关系,先定义一个接口,该接口表明要创建哪些组合对象,实现该接口的工厂类负责生产这些对象,这些对象有各自的接口,所以每个工厂类实例生成的组合对象都是不一样的,但拥有相同的组合关系。比如在肯德基的汉堡包,需要的材料在武汉和上海都是相同的,这些材料是组合关系,组成汉堡包,但材料本身有不同的实力,比如牛肉,武汉的牛肉和上海的牛肉的实质不一样(上海的好吃些~),所以武汉的工厂能生产武汉的汉堡包,上海的能生成上海的,汉堡包用的材料是组合关系,组合对象抽象名相同,但具体材料是不一样的。
相关标签: 设计模式