工程模式包含以下几个核心角色:
抽象产品(Abstract Product):定义了产品的共同接口或抽象类。它可以是具体产品类的父类或接口,规定了产品对象的共同方法。
具体产品(Concrete Product):实现了抽象产品接口,定义了具体产品的特定行为和属性。
抽象工厂(Abstract Factory):声明了创建产品的抽象方法,可以是接口或抽象类。它可以有多个方法用于创建不同类型的产品。
具体工厂(Concrete Factory):实现了抽象工厂接口,负责实际创建具体产品的对象。
简单工厂:
简单工厂
每当我们用到某些具体类我们需要想到他的名字,然后再创建一个实例,这种过程很麻烦。为了少一点麻烦,我们不妨把这种创建或者制造过程交给一个 “工厂” 帮我们这么做,省去那些制造步骤。做一个伸手党,类似于“我太累了, 工厂你给我造一个吧”。 这个图片里就是我们把具体的类A,B,C的制造权交给了工厂,想要就问工厂要。
问:考虑一种情况,如果我们想要一种产品,但是不确定具体某个产品叫什么,怎么办?
答:我们去工厂看里面有造什么东西,从而找到自己所需的产品。
问:那如果此时工厂有大量的产品,一时半会儿可能浏览不过来,又怎么办?
答:此时应该对工厂动刀了。 显然一个工厂是不够的, 我们可以创办多个工厂,每个工厂对应不同的类别,我们找某个产品时,去相应类别的工厂 去找,去要就好了。
与上面同理,把不同工厂想象成不同的产品,每次手动创建一个工厂太累了,我还是想做伸手党,来个超级工厂吧,我告诉你造哪个你就给我哪个。
工厂模式: 就是把具体类的创建交给一个管理类(工厂)来创建
抽象工厂模式: 再把具体工厂的创建交给一个管理类(超级工厂)来创建