现实场景
标准的披萨有浇头、奶酪、酱、面饼,但披萨的风味很多。假设一家比萨店有两位厨师,分别擅长做纽约风味的披萨和芝加哥风味的披萨。当你分别点两种口味的披萨后,两个厨师会分别准备对应的配料、面饼、食材等。这两种风味的披萨,尽管是不同的披萨,但它们都有披萨的基本特征。所以从高层角度看,“披萨饼”是一种食物,可以称它为抽象食物类。抽象披萨类型有些基本的要求,如浇头、面饼、奶酪、酱等。而披萨厨师就像是生产某类产品的工厂,所有披萨厨师都知道“通用”或者“抽象”的烤披萨知识,但披萨饼的风味取决于实际制作的厨师。消费者不关心披萨是“怎样”做出来的,只要披萨好吃就行。
抽象工厂提供一个固定的接口,用于创建一系列有关联或相依存的对象,而不必指定其具体类或其创建细节。
软件设计的黄金法则:变动需要抽象;如果有多个类共有相同的行为,但实际表现不同,则可能需要某种抽象类型作为其父类被继承。抽象类型定义所有相关具体类共有的共同行为。
AbstractFactory.jpeg
网友评论