<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://logicwiki.co.uk/index.php?action=history&amp;feed=atom&amp;title=Abstract_Factory_Design_Pattern</id>
		<title>Abstract Factory Design Pattern - Revision history</title>
		<link rel="self" type="application/atom+xml" href="https://logicwiki.co.uk/index.php?action=history&amp;feed=atom&amp;title=Abstract_Factory_Design_Pattern"/>
		<link rel="alternate" type="text/html" href="https://logicwiki.co.uk/index.php?title=Abstract_Factory_Design_Pattern&amp;action=history"/>
		<updated>2026-05-09T15:58:06Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.26.2</generator>

	<entry>
		<id>https://logicwiki.co.uk/index.php?title=Abstract_Factory_Design_Pattern&amp;diff=1797&amp;oldid=prev</id>
		<title>AliIybar at 14:33, 18 January 2019</title>
		<link rel="alternate" type="text/html" href="https://logicwiki.co.uk/index.php?title=Abstract_Factory_Design_Pattern&amp;diff=1797&amp;oldid=prev"/>
				<updated>2019-01-18T14:33:16Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;' lang='en'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 14:33, 18 January 2019&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l262&quot; &gt;Line 262:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 262:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Output ===&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Output ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[File:AbstractFactoryDemo.jpg]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[File:AbstractFactoryDemo.jpg]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;-------------------&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;See Also [https://www.c-sharpcorner.com/article/abstract-factory-design-pattern-in-c-sharp/ https://www.c-sharpcorner.com/article/abstract-factory-design-pattern-in-c-sharp/]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>AliIybar</name></author>	</entry>

	<entry>
		<id>https://logicwiki.co.uk/index.php?title=Abstract_Factory_Design_Pattern&amp;diff=1796&amp;oldid=prev</id>
		<title>AliIybar at 14:32, 18 January 2019</title>
		<link rel="alternate" type="text/html" href="https://logicwiki.co.uk/index.php?title=Abstract_Factory_Design_Pattern&amp;diff=1796&amp;oldid=prev"/>
				<updated>2019-01-18T14:32:43Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://logicwiki.co.uk/index.php?title=Abstract_Factory_Design_Pattern&amp;amp;diff=1796&amp;amp;oldid=1793&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>AliIybar</name></author>	</entry>

	<entry>
		<id>https://logicwiki.co.uk/index.php?title=Abstract_Factory_Design_Pattern&amp;diff=1793&amp;oldid=prev</id>
		<title>AliIybar: Created page with &quot;Category:Extreme Programming Category:Design Patterns Category:OOP  An interface for creating families of related or dependent objects without specifying their con...&quot;</title>
		<link rel="alternate" type="text/html" href="https://logicwiki.co.uk/index.php?title=Abstract_Factory_Design_Pattern&amp;diff=1793&amp;oldid=prev"/>
				<updated>2019-01-18T14:26:11Z</updated>
		
		<summary type="html">&lt;p&gt;Created page with &amp;quot;&lt;a href=&quot;/index.php?title=Category:Extreme_Programming&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Category:Extreme Programming (page does not exist)&quot;&gt;Category:Extreme Programming&lt;/a&gt; &lt;a href=&quot;/Category:Design_Patterns&quot; title=&quot;Category:Design Patterns&quot;&gt;Category:Design Patterns&lt;/a&gt; &lt;a href=&quot;/index.php?title=Category:OOP&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Category:OOP (page does not exist)&quot;&gt;Category:OOP&lt;/a&gt;  An interface for creating families of related or dependent objects without specifying their con...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Category:Extreme Programming]]&lt;br /&gt;
[[Category:Design Patterns]]&lt;br /&gt;
[[Category:OOP]]&lt;br /&gt;
&lt;br /&gt;
An interface for creating families of related or dependent objects without specifying their concrete classes. We can say it is just an object maker which can create more than one type of object.&lt;br /&gt;
&lt;br /&gt;
The object it produces is known to the client only by that object's interface, not by the object's actual concrete implementation.&lt;br /&gt;
== When to use it? ==&lt;br /&gt;
We use it when we have a requirement to create a set of related objects, or dependent objects which must be used together as families of objects. Concrete classes should be decoupled from clients.&lt;br /&gt;
== How does it differ from Factory Method? ==&lt;br /&gt;
First of all, both of them fall under Creational category and it means both will solve the problem relating to object creation. Factory Method and Abstract Factory design pattern are about creating objects.&lt;br /&gt;
=== Factory Method Design Pattern ===&lt;br /&gt;
Here, we define an interface which will expose a method which will create objects for us. Return type of that method is never a concrete type; rather, it will be some interface (or may be an abstract class).&lt;br /&gt;
* Creates object through inheritance&lt;br /&gt;
* Produce only one product&lt;br /&gt;
* Implements code in the abstract creator that makes use of the concrete type that sub class produces&lt;br /&gt;
=== Abstract Factory Design Pattern ===&lt;br /&gt;
Here, we define an interface which will create families of related or dependent objects. In simple words, interface will expose multiple methods each of which will create some object. Again, here method return types will be generic interfaces. All these objects will together become part of some important functionality.&lt;br /&gt;
* Creates object through composition&lt;br /&gt;
* Produce families of products&lt;br /&gt;
* Concrete factories implements factory method to create product&lt;br /&gt;
=== UML ===&lt;br /&gt;
[[File:AbstractFactory.jpg]]&lt;br /&gt;
The classes and objects participating in the above UML class diagram are as follow.&lt;br /&gt;
* AbstractFactory&lt;br /&gt;
This is an interface for operations which is used to create abstract product.&lt;br /&gt;
* ConcreteFactory&lt;br /&gt;
This is a class which implements the AbstractFactory interface operations to create concrete products.&lt;br /&gt;
* AbstractProduct&lt;br /&gt;
This declares an interface for a type of product object&lt;br /&gt;
* Product&lt;br /&gt;
This defines a product object to be created by the corresponding concrete factory also implements the AbstractProduct interface&lt;br /&gt;
* Client&lt;br /&gt;
This is a class which uses AbstractFactory and AbstractProduct interfaces to create a family of related objects.&lt;/div&gt;</summary>
		<author><name>AliIybar</name></author>	</entry>

	</feed>