意图(简介):
抽象工厂简化了一系列相关或相互依赖对象的不同产品线的创建。它提供了用于这一目的的接口,不指定具体类。这就像说开始(创建)一个新的产品线,你需要同意的合同。
说明:
事实上,有两个在这种格局的主要构造。一个是工厂和其他产品。每个工厂的产品与自己的实施创造了同一组。该模式只提供抽象工厂,也就是说,只是描述的产品必须由取得任何具体的工厂和抽象产品,即一种特定的产品必须提供哪些服务。把它简单,图案为所有的工厂,并为每个产品提供一个接口(规范)。在C#中,它可以很容易地使用接口实现。
一个例子:
永远是最好的一个例子是,如果图片的问题是没有得到清除。因此,让我们举一个例子。假设,在我们的窗口系统,我们要允许不同厂商提供的窗口工具包,使界面更加灵活。施加一定的标准为每个窗口工具包,我们使用抽象工厂模式。我们定义一个接口(WindowingKit)说,每一个具体的窗口组件,任何厂商提供的,必须有能力创建窗口和按钮(指定抽象工厂)。但是,我们也应处以一定的规则,为创建“按钮,窗口,以确保不同的按钮和窗口,从不同的窗口工具包提供(产品)(混凝土工厂)以同样的方式运作,尽管其不同的外观和感觉。这可以通过定义一个接口为每个按钮和窗口,使每一个具体的窗口和按钮必须有不同的实现类似的服务。
类图:

实现:
首先,我们定义一个名为WindowingKit作为一个接口
这对每个具体的窗口工具包(类实现这个接口)将指定的方法(CreateWindow的CreateButton)和指定类型(“窗口”按钮)创建窗口和按钮。现在,我们应该指定类型的窗口和按钮。这是通过各自的接口
这里我们对任何窗口工具包的规格结束。现在每个窗口工具包提供可以使他/她自己的窗口工具包,通过实施这三个接口,在他/她自己的具体方式。像一个矩形按钮提供窗口工具包,而其他提供人脸图像等圆形按钮套件,所有这一切的最重要组成部分,是我们的窗口系统将处理在相同的方式使用这些接口的引用,因为我们每个套件将很快显示。
现在,让我们做一个标准的(或默认)窗口工具包。首先,我们需要实施WindowingKit接口
注意CreateWindow的()StandardKit方法,返回一个新的StandardWindow实例,这是它自己定义的类,实现了窗口界面
同样是真正的CreateButton()的StandardKit的方法。此外,另一家厂商已在类似的方式,给她的窗口工具包实施命名它ExternalKit。
最后在Main方法中,我们的窗口系统使用每两个窗口工具箱(StandardKit,ExternalKit)逐个创建和使用他们的具体管制措施(产品)。为主要方法的代码是什么样
通过这种模式实现的好处:
运用抽象工厂模式在这里在给定的情况下,代码是高度可重用和可扩展性。面向对象编程的主题是,除了新的组件(类),应该不会影响旧的组件(或系统),这正是正在发生的事情。不同厂商可能会提供自己的WindowingKit的WindowingSystem可以使用完全相同的方式在这些。每个WindowingKit势必会与我们的窗口系统兼容模式施加的限制。抽象工厂的另一个好处是,它提供了用于创建一系列相关或相互依赖对象的家庭房间意味着我们的StandardButton将始终在StandardWindow出现的。
本站技术原创栏目文章均为中睿原创或编译,转载请注明:文章来自中睿,本站保留追究责任的权利。