<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://nfex.ru/index.php?action=history&amp;feed=atom&amp;title=Csharp%2FCSharp_Tutorial%2FDesign_Patterns%2FFactory_Pattern</id>
		<title>Csharp/CSharp Tutorial/Design Patterns/Factory Pattern - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://nfex.ru/index.php?action=history&amp;feed=atom&amp;title=Csharp%2FCSharp_Tutorial%2FDesign_Patterns%2FFactory_Pattern"/>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=Csharp/CSharp_Tutorial/Design_Patterns/Factory_Pattern&amp;action=history"/>
		<updated>2026-04-29T17:14:06Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://nfex.ru/index.php?title=Csharp/CSharp_Tutorial/Design_Patterns/Factory_Pattern&amp;diff=5902&amp;oldid=prev</id>
		<title> в 15:31, 26 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=Csharp/CSharp_Tutorial/Design_Patterns/Factory_Pattern&amp;diff=5902&amp;oldid=prev"/>
				<updated>2010-05-26T15:31:53Z</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;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 15:31, 26 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://nfex.ru/index.php?title=Csharp/CSharp_Tutorial/Design_Patterns/Factory_Pattern&amp;diff=5903&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=Csharp/CSharp_Tutorial/Design_Patterns/Factory_Pattern&amp;diff=5903&amp;oldid=prev"/>
				<updated>2010-05-26T12:17:41Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Abstract Factory==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;using System;&lt;br /&gt;
&lt;br /&gt;
  public class AComputer: Computer&lt;br /&gt;
  {&lt;br /&gt;
    public override void ComputerBrand()&lt;br /&gt;
    {&lt;br /&gt;
      Console.WriteLine (&amp;quot;A Computer.&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    public AComputer(){;}&lt;br /&gt;
  }&lt;br /&gt;
  public class AComputerDesk: ComputerDesk&lt;br /&gt;
  {&lt;br /&gt;
    public override void ComputerDeskBrand()&lt;br /&gt;
    {&lt;br /&gt;
      Console.WriteLine(&amp;quot;A Computer cap.&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    public AComputerDesk(){;}&lt;br /&gt;
  }&lt;br /&gt;
  public class AComputerFactory: ComputerFactory&lt;br /&gt;
  {&lt;br /&gt;
    public override Computer BuildComputer()&lt;br /&gt;
    {&lt;br /&gt;
      Computer rad = new AComputer();&lt;br /&gt;
      rad.ruputerBrand();&lt;br /&gt;
      return rad;&lt;br /&gt;
    }&lt;br /&gt;
    public override ComputerDesk BuildComputerDesk()&lt;br /&gt;
    {&lt;br /&gt;
      ComputerDesk cap = new AComputerDesk();&lt;br /&gt;
      cap.ruputerDeskBrand();&lt;br /&gt;
      return cap;&lt;br /&gt;
    }&lt;br /&gt;
        &lt;br /&gt;
    public AComputerFactory(){;}&lt;br /&gt;
  }&lt;br /&gt;
  public class BComputer:Computer&lt;br /&gt;
  {&lt;br /&gt;
    public override void ComputerBrand()&lt;br /&gt;
    {&lt;br /&gt;
      Console.WriteLine (&amp;quot;B Computer.&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    public BComputer(){;}&lt;br /&gt;
  }&lt;br /&gt;
  public class BComputerDesk: ComputerDesk&lt;br /&gt;
  {&lt;br /&gt;
      &lt;br /&gt;
    public override void ComputerDeskBrand()&lt;br /&gt;
    {&lt;br /&gt;
      Console.WriteLine(&amp;quot;B Computer cap.&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    public BComputerDesk(){;}&lt;br /&gt;
  }&lt;br /&gt;
  public class BComputerFactory: ComputerFactory&lt;br /&gt;
  {&lt;br /&gt;
    &lt;br /&gt;
    public override Computer BuildComputer()&lt;br /&gt;
    {&lt;br /&gt;
      Computer rad = new  BComputer();&lt;br /&gt;
      rad.ruputerBrand();&lt;br /&gt;
      return rad;&lt;br /&gt;
    }&lt;br /&gt;
    public override ComputerDesk BuildComputerDesk()&lt;br /&gt;
    {&lt;br /&gt;
      ComputerDesk cap = new BComputerDesk();&lt;br /&gt;
      cap.ruputerDeskBrand();&lt;br /&gt;
      return cap;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    public BComputerFactory(){;}&lt;br /&gt;
  }&lt;br /&gt;
  public class CComputer: Computer&lt;br /&gt;
  {&lt;br /&gt;
    &lt;br /&gt;
    public override void ComputerBrand()&lt;br /&gt;
    {&lt;br /&gt;
      Console.WriteLine (&amp;quot;C Computer.&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  &lt;br /&gt;
    public CComputer() {;}&lt;br /&gt;
  }&lt;br /&gt;
  public class CComputerDesk: ComputerDesk&lt;br /&gt;
  {&lt;br /&gt;
    &lt;br /&gt;
    public override void ComputerDeskBrand()&lt;br /&gt;
    {&lt;br /&gt;
      Console.WriteLine(&amp;quot;C Computer cap.&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    public CComputerDesk(){;}&lt;br /&gt;
  }&lt;br /&gt;
    public class CComputerFactory : ComputerFactory&lt;br /&gt;
  {&lt;br /&gt;
    &lt;br /&gt;
    public override Computer BuildComputer()&lt;br /&gt;
    {&lt;br /&gt;
      Computer rad = new  CComputer();&lt;br /&gt;
      rad.ruputerBrand();&lt;br /&gt;
      return rad;&lt;br /&gt;
    }&lt;br /&gt;
    public override ComputerDesk BuildComputerDesk()&lt;br /&gt;
    {&lt;br /&gt;
      ComputerDesk cap = new CComputerDesk();&lt;br /&gt;
      cap.ruputerDeskBrand();&lt;br /&gt;
      return cap;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    public CComputerFactory(){;}&lt;br /&gt;
  }&lt;br /&gt;
  public abstract class Computer&lt;br /&gt;
  {&lt;br /&gt;
    public abstract void ComputerBrand();&lt;br /&gt;
  }&lt;br /&gt;
  public abstract class ComputerDesk&lt;br /&gt;
  {&lt;br /&gt;
    public abstract void ComputerDeskBrand();&lt;br /&gt;
  }&lt;br /&gt;
  public abstract class ComputerFactory&lt;br /&gt;
  {&lt;br /&gt;
        public abstract Computer BuildComputer();&lt;br /&gt;
    public abstract ComputerDesk BuildComputerDesk();&lt;br /&gt;
  }&lt;br /&gt;
  public class WorkOrder&lt;br /&gt;
  {&lt;br /&gt;
        public void AssembleComputer(ComputerFactory fact)&lt;br /&gt;
    {&lt;br /&gt;
      Computer rad = fact.BuildComputer();&lt;br /&gt;
      ComputerDesk cap = fact.BuildComputerDesk();&lt;br /&gt;
      this.Assemble();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    private void Assemble()&lt;br /&gt;
    {&lt;br /&gt;
      Console.WriteLine (&amp;quot;Assembling Computer and cap.&amp;quot;);&lt;br /&gt;
      Console.WriteLine();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    public WorkOrder(){;}&lt;br /&gt;
  }&lt;br /&gt;
  class Client&lt;br /&gt;
  {&lt;br /&gt;
    &lt;br /&gt;
    static void Main(string[] args)&lt;br /&gt;
    {&lt;br /&gt;
            ComputerFactory factoryOne = new AComputerFactory();&lt;br /&gt;
      WorkOrder workOne = new WorkOrder();&lt;br /&gt;
      workOne.AssembleComputer(factoryOne);&lt;br /&gt;
        &lt;br /&gt;
            ComputerFactory factoryTwo = new BComputerFactory();&lt;br /&gt;
      WorkOrder workTwo = new WorkOrder();&lt;br /&gt;
      workTwo.AssembleComputer(factoryTwo);&lt;br /&gt;
            ComputerFactory factoryThree = new CComputerFactory();&lt;br /&gt;
      WorkOrder workThree = new WorkOrder();&lt;br /&gt;
      workThree.AssembleComputer(factoryThree);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Factory Method Patterns==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;using System;&lt;br /&gt;
using System.Collections;&lt;br /&gt;
  public abstract class Section&lt;br /&gt;
  {&lt;br /&gt;
    public abstract void SomeSection();&lt;br /&gt;
  }&lt;br /&gt;
  public class TitleSection: Section&lt;br /&gt;
  {&lt;br /&gt;
    &lt;br /&gt;
    public override void SomeSection()&lt;br /&gt;
    {&lt;br /&gt;
      Console.WriteLine(&amp;quot;title.&amp;quot;);&lt;br /&gt;
    }  &lt;br /&gt;
        &lt;br /&gt;
    public TitleSection(){;}&lt;br /&gt;
    &lt;br /&gt;
  }&lt;br /&gt;
  public class HeaderSection: Section&lt;br /&gt;
  {&lt;br /&gt;
    public override void SomeSection()&lt;br /&gt;
    {&lt;br /&gt;
      Console.WriteLine(&amp;quot;header.&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    public HeaderSection(){;}&lt;br /&gt;
  }&lt;br /&gt;
  public class FooterSection: Section&lt;br /&gt;
  {&lt;br /&gt;
        public override void SomeSection()&lt;br /&gt;
        {&lt;br /&gt;
            Console.WriteLine(&amp;quot;footer.&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    public FooterSection(){;}&lt;br /&gt;
  }&lt;br /&gt;
  public class MenuSection: Section&lt;br /&gt;
  {&lt;br /&gt;
    public override void SomeSection()&lt;br /&gt;
    {&lt;br /&gt;
      Console.WriteLine(&amp;quot;menu.&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
            &lt;br /&gt;
    public MenuSection(){;}&lt;br /&gt;
  }&lt;br /&gt;
  public class CatalogPage: Page&lt;br /&gt;
  {&lt;br /&gt;
    public override void AddSection(){&lt;br /&gt;
      this.pageCompositor.Clear();&lt;br /&gt;
      this.pageCompositor.Add(new TitleSection());&lt;br /&gt;
      this.pageCompositor.Add(new FooterSection());&lt;br /&gt;
    }&lt;br /&gt;
    public override void DisplayPage(){&lt;br /&gt;
      Console.WriteLine(&amp;quot;Catalog page contains:&amp;quot;);&lt;br /&gt;
      foreach(Section c in this.pageCompositor)&lt;br /&gt;
        c.SomeSection();&lt;br /&gt;
    }&lt;br /&gt;
    public CatalogPage()&lt;br /&gt;
    {&lt;br /&gt;
      this.AddSection();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public class ManualPage: Page&lt;br /&gt;
  {&lt;br /&gt;
    public override void AddSection()&lt;br /&gt;
    {&lt;br /&gt;
      this.pageCompositor.Clear();&lt;br /&gt;
      this.pageCompositor.Add(new MenuSection());&lt;br /&gt;
      this.pageCompositor.Add(new FooterSection());&lt;br /&gt;
      this.pageCompositor.Add(new HeaderSection());&lt;br /&gt;
    }&lt;br /&gt;
    public override void DisplayPage()&lt;br /&gt;
    {&lt;br /&gt;
      Console.WriteLine(&amp;quot;Manual page contains:&amp;quot;);&lt;br /&gt;
        foreach(Section c in this.pageCompositor)&lt;br /&gt;
        c.SomeSection();&lt;br /&gt;
      Console.WriteLine();&lt;br /&gt;
    }&lt;br /&gt;
    public ManualPage(){;}&lt;br /&gt;
  }&lt;br /&gt;
  public abstract class Page&lt;br /&gt;
  {&lt;br /&gt;
    protected ArrayList pageCompositor = new ArrayList();&lt;br /&gt;
    public abstract void AddSection();&lt;br /&gt;
    public abstract void DisplayPage();&lt;br /&gt;
  }  &lt;br /&gt;
  class Client&lt;br /&gt;
  {&lt;br /&gt;
    static void Main(string[] args)&lt;br /&gt;
    {&lt;br /&gt;
      Page p = new  CatalogPage();&lt;br /&gt;
      p.AddSection();&lt;br /&gt;
      p.DisplayPage();&lt;br /&gt;
  &lt;br /&gt;
      p = new ManualPage();&lt;br /&gt;
      p.AddSection();&lt;br /&gt;
      p.DisplayPage();&lt;br /&gt;
      &lt;br /&gt;
    }&lt;br /&gt;
  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Use a static class factory==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;using System; &lt;br /&gt;
 &lt;br /&gt;
class MyClass { &lt;br /&gt;
  int a, b; &lt;br /&gt;
 &lt;br /&gt;
  // Create a class factory for MyClass. &lt;br /&gt;
  static public MyClass factory(int i, int j) { &lt;br /&gt;
    MyClass t = new MyClass(); &lt;br /&gt;
    &lt;br /&gt;
    t.a = i; &lt;br /&gt;
    t.b = j; &lt;br /&gt;
 &lt;br /&gt;
    return t; // return an object &lt;br /&gt;
  } &lt;br /&gt;
 &lt;br /&gt;
  public void show() { &lt;br /&gt;
    Console.WriteLine(&amp;quot;a and b: &amp;quot; + a + &amp;quot; &amp;quot; + b); &lt;br /&gt;
  } &lt;br /&gt;
} &lt;br /&gt;
  &lt;br /&gt;
class MainClass { &lt;br /&gt;
  public static void Main() {   &lt;br /&gt;
    int i, j; &lt;br /&gt;
 &lt;br /&gt;
    // generate objects using the factory &lt;br /&gt;
    for(i=0, j=10; i &amp;lt; 10; i++, j--) { &lt;br /&gt;
      MyClass ob = MyClass.factory(i, j); // get an object &lt;br /&gt;
      ob.show(); &lt;br /&gt;
    } &lt;br /&gt;
       &lt;br /&gt;
    Console.WriteLine();    &lt;br /&gt;
  } &lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;a and b: 0 10&lt;br /&gt;
a and b: 1 9&lt;br /&gt;
a and b: 2 8&lt;br /&gt;
a and b: 3 7&lt;br /&gt;
a and b: 4 6&lt;br /&gt;
a and b: 5 5&lt;br /&gt;
a and b: 6 4&lt;br /&gt;
a and b: 7 3&lt;br /&gt;
a and b: 8 2&lt;br /&gt;
a and b: 9 1&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>