<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
	<id>https://www.ecured.cu/index.php?action=history&amp;feed=atom&amp;title=Abstract_Factory</id>
	<title>Abstract Factory - Historial de revisiones</title>
	<link rel="self" type="application/atom+xml" href="https://www.ecured.cu/index.php?action=history&amp;feed=atom&amp;title=Abstract_Factory"/>
	<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Abstract_Factory&amp;action=history"/>
	<updated>2026-06-11T10:09:19Z</updated>
	<subtitle>Historial de revisiones para esta página en el wiki</subtitle>
	<generator>MediaWiki 1.31.16</generator>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Abstract_Factory&amp;diff=3516160&amp;oldid=prev</id>
		<title>Carlos idict: Texto reemplazado: «Category:» por «Categoría:»</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Abstract_Factory&amp;diff=3516160&amp;oldid=prev"/>
		<updated>2019-08-21T13:08:03Z</updated>

		<summary type="html">&lt;p&gt;Texto reemplazado: «Category:» por «Categoría:»&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;es&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Revisión anterior&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revisión del 13:08 21 ago 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-l157&quot; &gt;Línea 157:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Línea 157:&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: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*[http://highscalability.wordpress.com/2010/03/08/patrones-de-diseno-introduccion-y-el-patron-abstract-factory/ Patrones de diseño:&amp;#160; Introducción y el patrón Abstract Factory]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*[http://highscalability.wordpress.com/2010/03/08/patrones-de-diseno-introduccion-y-el-patron-abstract-factory/ Patrones de diseño:&amp;#160; Introducción y el patrón Abstract Factory]&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: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Category&lt;/del&gt;: Informática]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; 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 class=&quot;diffchange diffchange-inline&quot;&gt;Categoría&lt;/ins&gt;: Informática]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wiki1:diff::1.12:old-1129621:rev-3516160 --&gt;
&lt;/table&gt;</summary>
		<author><name>Carlos idict</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Abstract_Factory&amp;diff=1129621&amp;oldid=prev</id>
		<title>Humberto0601ad jc en 22:18 7 nov 2011</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Abstract_Factory&amp;diff=1129621&amp;oldid=prev"/>
		<updated>2011-11-07T22:18:33Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;es&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Revisión anterior&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revisión del 22:18 7 nov 2011&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-l1&quot; &gt;Línea 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Línea 1:&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: #222; 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;{{Definición&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: #222; 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;|nombre=Abstract Factory&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: #222; 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;|imagen=&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: #222; 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;|tamaño=&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: #222; 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;|concepto=[[Patrón de diseño]] para el desarrollo de [[software]].&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: #222; 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: #222; 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 class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''Abstract Factory''' (Fábrica Abstracta) es un [[patrón de diseño]] para el desarrollo de [[software]]. Provee una [[interfaz]]&amp;#160; para crear familias de objetos relacionados o&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''Abstract Factory''' (Fábrica Abstracta) es un [[patrón de diseño]] para el desarrollo de [[software]]. Provee una [[interfaz]]&amp;#160; para crear familias de objetos relacionados o&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: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;dependientes entre ellos sin especificar una clase en concreto.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;dependientes entre ellos sin especificar una clase en concreto.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wiki1:diff::1.12:old-1123670:rev-1129621 --&gt;
&lt;/table&gt;</summary>
		<author><name>Humberto0601ad jc</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Abstract_Factory&amp;diff=1123670&amp;oldid=prev</id>
		<title>Ariel.perez jc.cmg en 12:55 6 nov 2011</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Abstract_Factory&amp;diff=1123670&amp;oldid=prev"/>
		<updated>2011-11-06T12:55:51Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;es&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Revisión anterior&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revisión del 12:55 6 nov 2011&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-l12&quot; &gt;Línea 12:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Línea 12:&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: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Archivo:Diagrama_Abstract_Factory.png]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Archivo:Diagrama_Abstract_Factory.png]]&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: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;La estructura &lt;/del&gt;típica &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;del patrón '''Abstract Factory''' es la siguiente:&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; 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 class=&quot;diffchange diffchange-inline&quot;&gt;== Estructura &lt;/ins&gt;típica &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;==&lt;/ins&gt;&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: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* '''Cliente''': La clase que llamará a la factoría adecuada ya que necesita crear uno de los objetos que provee la factoría, es decir, Cliente lo que quiere es obtener una instancia de alguno de los productos (ProductoA, ProductoB).&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* '''Cliente''': La clase que llamará a la factoría adecuada ya que necesita crear uno de los objetos que provee la factoría, es decir, Cliente lo que quiere es obtener una instancia de alguno de los productos (ProductoA, ProductoB).&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: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&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: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* '''AbstractFactory''': Es de definición de la interfaces de las factorías. Debe de proveer un método para la obtención de cada objeto que pueda crear. (&amp;quot;crearProductoA()&amp;quot; y &amp;quot;crearProductoB()&amp;quot;)&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* '''AbstractFactory''': Es de definición de la interfaces de las factorías. Debe de proveer un método para la obtención de cada objeto que pueda crear. (&amp;quot;crearProductoA()&amp;quot; y &amp;quot;crearProductoB()&amp;quot;)&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: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* '''Factorías Concretas''': Estas son las diferentes familias de productos. Provee de la instancia concreta de la que se encarga de crear. De esta forma podemos tener una factoría que cree los elementos gráficos para [[Windows]] y otra que los cree para [[Linux]], pudiendo poner fácilmente (creando una nueva) otra que los cree para MacOS, por ejemplo.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; 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;* '''Factorías Concretas''': Estas son las diferentes familias de productos. Provee de la instancia concreta de la que se encarga de crear. De esta forma podemos tener una factoría que cree los elementos gráficos para [[Windows]] y otra que los cree para [[Linux]], pudiendo poner fácilmente (creando una nueva) otra que los cree para &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;[[&lt;/ins&gt;MacOS&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;]]&lt;/ins&gt;, por ejemplo.&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: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&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: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* '''Producto abstracto''': Definición de las interfaces para la familia de productos ''genéricos''. En el diagrama son &amp;quot;ProductoA&amp;quot; y &amp;quot;ProductoB&amp;quot;. En un ejemplo de interfaces gráficas podrían ser todos los elementos: [[Botón]], [[Ventana]], [[Cuadro de Texto]], [[Combo]]... El cliente trabajará directamente sobre esta interfaz, que será implementada por los diferentes productos concretos.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* '''Producto abstracto''': Definición de las interfaces para la familia de productos ''genéricos''. En el diagrama son &amp;quot;ProductoA&amp;quot; y &amp;quot;ProductoB&amp;quot;. En un ejemplo de interfaces gráficas podrían ser todos los elementos: [[Botón]], [[Ventana]], [[Cuadro de Texto]], [[Combo]]... El cliente trabajará directamente sobre esta interfaz, que será implementada por los diferentes productos concretos.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wiki1:diff::1.12:old-1121269:rev-1123670 --&gt;
&lt;/table&gt;</summary>
		<author><name>Ariel.perez jc.cmg</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Abstract_Factory&amp;diff=1121269&amp;oldid=prev</id>
		<title>Ariel.perez jc.cmg: Página creada con ''''Abstract Factory''' (Fábrica Abstracta) es un patrón de diseño para el desarrollo de software. Provee una interfaz  para crear familias de objetos relacionados...'</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Abstract_Factory&amp;diff=1121269&amp;oldid=prev"/>
		<updated>2011-11-04T21:29:33Z</updated>

		<summary type="html">&lt;p&gt;Página creada con &amp;#039;&amp;#039;&amp;#039;&amp;#039;Abstract Factory&amp;#039;&amp;#039;&amp;#039; (Fábrica Abstracta) es un &lt;a href=&quot;/index.php?title=Patr%C3%B3n_de_dise%C3%B1o&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Patrón de diseño (la página no existe)&quot;&gt;patrón de diseño&lt;/a&gt; para el desarrollo de &lt;a href=&quot;/Software&quot; title=&quot;Software&quot;&gt;software&lt;/a&gt;. Provee una &lt;a href=&quot;/Interfaz&quot; title=&quot;Interfaz&quot;&gt;interfaz&lt;/a&gt;  para crear familias de objetos relacionados...&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Página nueva&lt;/b&gt;&lt;/p&gt;&lt;div&gt;'''Abstract Factory''' (Fábrica Abstracta) es un [[patrón de diseño]] para el desarrollo de [[software]]. Provee una [[interfaz]]  para crear familias de objetos relacionados o&lt;br /&gt;
dependientes entre ellos sin especificar una clase en concreto.&lt;br /&gt;
&lt;br /&gt;
== Contexto y problema ==&lt;br /&gt;
Contexto: Debemos crear diferentes objetos, todos pertenecientes a la misma familia. Por ejemplo: las [[librerías]] para crear interfaces gráficas suelen utilizar este patrón y cada familia sería un sistema operativo distinto. Así pues, el usuario declara un Botón, pero de forma más interna lo que está creando es un BotónWindows o un BotónLinux, por ejemplo.&lt;br /&gt;
&lt;br /&gt;
El problema que intenta solucionar este patrón es el de crear diferentes familias de objetos.&lt;br /&gt;
&lt;br /&gt;
El patrón '''Abstract Factory''' está aconsejado cuando se prevé la inclusión de nuevas familias de productos, pero puede resultar contraproducente cuando se añaden nuevos productos o cambian los existentes, puesto que afectaría a todas las familias creadas.&lt;br /&gt;
&lt;br /&gt;
== Aspecto estático ==&lt;br /&gt;
[[Archivo:Diagrama_Abstract_Factory.png]]&lt;br /&gt;
&lt;br /&gt;
La estructura típica del patrón '''Abstract Factory''' es la siguiente:&lt;br /&gt;
* '''Cliente''': La clase que llamará a la factoría adecuada ya que necesita crear uno de los objetos que provee la factoría, es decir, Cliente lo que quiere es obtener una instancia de alguno de los productos (ProductoA, ProductoB).&lt;br /&gt;
&lt;br /&gt;
* '''AbstractFactory''': Es de definición de la interfaces de las factorías. Debe de proveer un método para la obtención de cada objeto que pueda crear. (&amp;quot;crearProductoA()&amp;quot; y &amp;quot;crearProductoB()&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
* '''Factorías Concretas''': Estas son las diferentes familias de productos. Provee de la instancia concreta de la que se encarga de crear. De esta forma podemos tener una factoría que cree los elementos gráficos para [[Windows]] y otra que los cree para [[Linux]], pudiendo poner fácilmente (creando una nueva) otra que los cree para MacOS, por ejemplo.&lt;br /&gt;
&lt;br /&gt;
* '''Producto abstracto''': Definición de las interfaces para la familia de productos ''genéricos''. En el diagrama son &amp;quot;ProductoA&amp;quot; y &amp;quot;ProductoB&amp;quot;. En un ejemplo de interfaces gráficas podrían ser todos los elementos: [[Botón]], [[Ventana]], [[Cuadro de Texto]], [[Combo]]... El cliente trabajará directamente sobre esta interfaz, que será implementada por los diferentes productos concretos.&lt;br /&gt;
&lt;br /&gt;
* '''Producto concreto''': Implementación de los diferentes productos. Podría ser por ejemplo &amp;quot;BotónWindows&amp;quot; y &amp;quot;BotónLinux&amp;quot;. Como ambos implementan &amp;quot;Botón&amp;quot; el cliente no sabrá si está en Windows o Linux, puesto que trabajará directamente sobre la superclase o interfaz.&lt;br /&gt;
&lt;br /&gt;
== Un ejemplo ==&lt;br /&gt;
&lt;br /&gt;
Para mostrar el concepto del Abstract Factory vamos a hacer un sencillo reloj que nos muestra la hora actual. Como sabemos, la hora puede ser desplegada en formato de 24Hrs&lt;br /&gt;
o puede ser desplegada en formato AM/PM. Recordando que es a manera de&lt;br /&gt;
ejemplo, vamos a utilizar la clase [[Date]] de una manera que no se debe, y&lt;br /&gt;
probablemente el reloj lo haríamos de una manera más sencilla, pero&lt;br /&gt;
para nuestro ejemplo queda perfecta su uso. Como en el caso del&lt;br /&gt;
diccionario, haremos una clase abstracta de Reloj y dos&lt;br /&gt;
implementaciones para cada una de los formatos, y una clase que&lt;br /&gt;
contenga el método del Factory Method. La cosa quedaría algo así:&lt;br /&gt;
&lt;br /&gt;
La clase Reloj:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=java&amp;gt;public abstract class Reloj {&lt;br /&gt;
 &lt;br /&gt;
    abstract String dameLaHora();&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La clase que se da la hora en formato AM/PM:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=java&amp;gt;public class RelojAmPm extends Reloj{&lt;br /&gt;
 &lt;br /&gt;
    public RelojAmPm(){&lt;br /&gt;
 &lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    public String dameLaHora() {&lt;br /&gt;
        Date d = new Date();&lt;br /&gt;
        int hora = d.getHours();&lt;br /&gt;
        int minutos = d.getMinutes();&lt;br /&gt;
        int segundos = d.getSeconds();&lt;br /&gt;
        String tr;&lt;br /&gt;
        if (hora&amp;amp;lt;=12){&lt;br /&gt;
            tr=&amp;quot;Son las &amp;quot;+hora+&amp;quot;:&amp;quot;+minutos+&amp;quot;:&amp;quot;+segundos+&amp;quot; AM&amp;quot;;&lt;br /&gt;
        } else {&lt;br /&gt;
            tr=&amp;quot;Son las &amp;quot;+(hora-12)+&amp;quot;:&amp;quot;+minutos+&amp;quot;:&amp;quot;+segundos+&amp;quot; PM&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        return tr;&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La que nos da la hora en formato de 24 horas:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=java&amp;gt;public class Reloj24Hrs extends Reloj {&lt;br /&gt;
 &lt;br /&gt;
    public String dameLaHora() {&lt;br /&gt;
        Date d = new Date();&lt;br /&gt;
        int hora = d.getHours();&lt;br /&gt;
        int minutos = d.getMinutes();&lt;br /&gt;
        int segundos = d.getSeconds();&lt;br /&gt;
        String tr;&lt;br /&gt;
        tr = &amp;quot;Son las &amp;quot; + hora + &amp;quot;:&amp;quot; + minutos + &amp;quot;:&amp;quot; + segundos + &amp;quot; &amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
        return tr;&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nuestra clase que contiene la el método que elije las instancias. A&lt;br /&gt;
diferencia del post anterior, ahora el parámetro que recibe el método&lt;br /&gt;
es un entero, que acepta los enteros especificados como constantes&lt;br /&gt;
estáticas en la clase. Esto se usa mucho para no estar adivinando los&lt;br /&gt;
paráemetros que acepta el método:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=java&amp;gt;public class RelojFactory {&lt;br /&gt;
    public static final int RELOJ_AM_PM=0;&lt;br /&gt;
    public static final int RELOJ_24_HRS=1;&lt;br /&gt;
 &lt;br /&gt;
    public RelojFactory(){&lt;br /&gt;
 &lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    public static Reloj createReloj(int tipoDeReloj){&lt;br /&gt;
        if (tipoDeReloj==RelojFactory.RELOJ_24_HRS){&lt;br /&gt;
            return new Reloj24Hrs();&lt;br /&gt;
        }&lt;br /&gt;
        if (tipoDeReloj==RelojFactory.RELOJ_AM_PM){&lt;br /&gt;
            return new RelojAmPm();&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        return null;&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Y finalmente la clase cliente, que será la usuario final:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=java&amp;gt;public class MainClient {&lt;br /&gt;
 &lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        Reloj r = RelojFactory.createReloj(RelojFactory.RELOJ_24_HRS);&lt;br /&gt;
        System.out.println(r.dameLaHora());&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hasta aquí tenemos dos fábricas: una de palabras, y la que acabamos de hacer que nos da la hora. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Véase también ==&lt;br /&gt;
[[Factory Method (patrón de diseño)|Factory Method]]&lt;br /&gt;
&lt;br /&gt;
== Enlaces externos ==&lt;br /&gt;
&lt;br /&gt;
* [http://software.guisho.com/abstract-factory-pattern-patrones Abstract Factory Pattern – Patrones] &lt;br /&gt;
&lt;br /&gt;
* [http://www.apwebco.com/gofpatterns/creational/AbstractFactory.html Ejemplo en Java con Diagrama UML]&lt;br /&gt;
&lt;br /&gt;
== Fuentes ==&lt;br /&gt;
&lt;br /&gt;
* [http://software.guisho.com/abstract-factory-pattern-patrones Abstract Factory Pattern – Patrones] &lt;br /&gt;
&lt;br /&gt;
*[http://www.slideshare.net/dialheca/abstract-factory Abstract Factory - Presentation Transcript]&lt;br /&gt;
&lt;br /&gt;
*[http://highscalability.wordpress.com/2010/03/08/patrones-de-diseno-introduccion-y-el-patron-abstract-factory/ Patrones de diseño:  Introducción y el patrón Abstract Factory]&lt;br /&gt;
&lt;br /&gt;
[[Category: Informática]]&lt;/div&gt;</summary>
		<author><name>Ariel.perez jc.cmg</name></author>
		
	</entry>
</feed>