2015-05-17 69 views
0

我是C#的新手,需要帮助完成学校任务。我应该创建一个程序,在Visual Studio上使用Windows窗体提供工厂设计模式的示例。我一直在网上寻找帮助,但我使用的代码给了我错误。 displayResults是我的文本框的名称,但它不被识别。此外,当我去c#工厂设计模式winforms

protected void Page_Load (object sender, EventArgs e)

它不承认我的一些课程。

感谢您对此提供任何帮助或建议。如果这真的很明显,我非常新,很抱歉。

这里是我的所有代码:

namespace FactoryDesignPattern 
{ 
public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 

    } 
} 

abstract class Factory 
{ 
    public abstract Product GetProduct(); 
} 

class ConcreteFactoryForProudct1 : Factory 
{ 
    public override Product GetProduct() 
    { 
     return new Product1(); 
    } 
} 

class ConcreteFactoryForProudct2 : Factory 
{ 
    public override Product GetProduct() 
    { 
     return new Product2(); 
    } 
} 

interface Product 
{ 
    void GetDetails(); 
} 

class Product1 : Product 
{ 
    public void GetDetails(); 

    displayResults.WriteLine("Product 1 details are: "); 

} 

class Product2 : Product 
{ 
    public void GetDetails(); 

    displayResults.WriteLine("Product 2 details are: "); 
} 
protected void Page_Load (object sender, EventArgs e) 
{ 
Factory[] objFactories = new Factory[2]; 
objFactories[0] = new ConcreteFactoryForProduct1(); 
objFactories[1] = new ConcreteFactoryForProduct2(); 
foreach (Factory objFactories in objFactories) 
    { 
     product objProduct = objFactory.GetProduct(); 
     objProduct.GetDetails(); 
    } 
} 



} 
+1

我想你会需要张贴在分配更多细节。这项任务的目标是什么。即你对工厂有什么成就?另外,请发布任何具体的错误消息。有一件事要注意:把'public'放在你的类定义之前。我认为这对你有帮助。 – DWright

+0

将page_load中的所有代码移动到form1_load并删除page_load,您不需要它。为什么它应该是product2的一部分? GetDetails从未实现,displayResults是什么? –

+0

抽象工厂模式已正确实施,因此您正处于正确的轨道上,涉及该部分练习 –

回答

0

有你的代码的几个问题,这将导致其无法进行编译。下面是你的代码的改进,它可能还没有编译,没有尝试过,但它应该让你去。我使用了Trace.WriteLine,所以请注意调试窗口使用System.Diagnostics请求添加,否则Trace不会被识别。我还多次添加了public关键字,以确保这些类不会彼此隐藏。这可能不是必需的。你在这里实施的工厂计划是正确的。
你的代码中也有一些拼写错误,要小心这些,尽管你的编译器会捕获所有的错误。

namespace FactoryDesignPattern 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 
      Factory[] objFactories = new Factory[2]; 
      objFactories[0] = new ConcreteFactoryForProduct1(); 
      objFactories[1] = new ConcreteFactoryForProduct2(); 
      foreach (Factory objFactories in objFactories) 
      { 
       product objProduct = objFactory.GetProduct(); 
       objProduct.GetDetails(); 
      } 
     } 
    } 

    public abstract class Factory 
    { 
     public abstract Product GetProduct(); 
    } 

    public class ConcreteFactoryForProduct1: Factory 
    { 
     public override Product GetProduct() 
     { 
      return new Product1(); 
     } 
    } 

    public class ConcreteFactoryForProduct2: Factory 
    { 
     public override Product GetProduct() 
     { 
      return new Product2(); 
     } 
    } 

    public interface Product 
    { 
     void GetDetails(); 
    } 

    public class Product1 : Product 
    { 
     public void GetDetails(){ 
      Trace.WriteLine("Product 1 details are: "); 
     } 
    } 

    public class Product2 : Product 
    { 
     public void GetDetails(){ 
      Trace.WriteLine("Product 2 details are: "); 
     } 
    } 
} 
-1
namespace Abstract_Factory 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 
     private void Form1_Load(object sender, EventArgs e) 
     { 
     } 
     private void button1_Click(object sender, EventArgs e) 
     { 
      int x = comboBox1.SelectedIndex; 
      Factory[] objFactories = new Factory[1]; 
      switch (x) 
      { 
       case 0: 
        objFactories[0] = new Figura1(); 
        foreach (Factory ob in objFactories) 
        { 
         FIGURAS objProduct = ob.GetFig(); 
         objProduct.Mensaje(); 
        } 
        break; 
       case 1: 
        objFactories[0] = new Figura2(); 
        foreach (Factory ob in objFactories) 
        { 
         FIGURAS objProduct = ob.GetFig(); 
         objProduct.Mensaje(); 
        } 
        break; 
       case 2: 
        objFactories[0] = new Figura3(); 
        foreach (Factory ob in objFactories) 
        { 
         FIGURAS objProduct = ob.GetFig(); 
         objProduct.Mensaje(); 
        } 
        break; 
       default: 
        { 
         MessageBox.Show("***"); 
         break; 
        } 
      } 
     } 

     public abstract class Factory 
     { 
      public abstract FIGURAS GetFig(); 
     } 

     public class Figura1 : Factory 
     { 
      public override FIGURAS GetFig() 
      { 
       return new Fig1(); 
      } 
     } 

     public class Figura2 : Factory 
     { 
      public override FIGURAS GetFig() 
      { 
       return new Fig2(); 
      } 
     } 
     public class Figura3 : Factory 
     { 
      public override FIGURAS GetFig() 
      { 
       return new Fig3(); 
      } 
     } 
     public interface FIGURAS 
     { 
      void Mensaje(); 
     } 
     public class Fig1 : FIGURAS 
     { 
      public void Mensaje() 
      { 
       MessageBox.Show("FIGURA 1: CUADRADO"); 
      } 
     } 
     public class Fig2 : FIGURAS 
     { 
      public void Mensaje() 
      { 
       MessageBox.Show("FIGURA 2: RECTANGULO"); 
      } 
     } 
     public class Fig3 : FIGURAS 
     { 
      public void Mensaje() 
      { 
       MessageBox.Show("FIGURA 3: TRIANGULO"); 
      } 
     } 
    } 
}