2010-06-04 2 views
2

Я пытаюсь понять проблемы дизайна шаблона. Я пытаюсь изменить код, подобный этому в winforms, и попытаться выяснить, соответствует ли какой-либо шаблон дизайна моему требованию. Пожалуйста, предложите, какой из них лучше всего в этом сценарии. Это очень простой код, содержащий 2 страницы вкладок, которые могут иметь разные элементы управления, которые можно добавить динамически и считывать разные файлы при нажатии определенной вкладки. Чтобы подробнее разобраться ... Я написал этот код, чтобы узнать и понять шаблон дизайна. Это просто сценарий, когда пользователь нажимает на определенную вкладку, на которой будут отображаться динамические элементы управления..net дизайн шаблон вопрос

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


    private void tabControl1_SelectedIndexChanged(object sender, EventArgs e) 
    { 


     if (tabControl1.SelectedTab.Name.Equals("tabPage1")) 
     { 
      GeneratedynamicControlsForTab1(); 
     } 
     else if (tabControl1.SelectedTab.Name.Equals("tabPage2")) 
     { 
      GeneratedynamicControlsForTab2(); 
     } 
    } 

    private void GeneratedynamicControlsForTab1() 
    { 
     Label label1 = new Label(); 
     label1.Text = "Label1"; 
     tabPage1.Controls.Add(label1); 

       } 

    private void GeneratedynamicControlsForTab2() 
    { 
     tabPage1.Controls.Clear(); 
     Label label2 = new Label(); 
     label2.Text = "Label2"; 
     tabPage2.Controls.Add(label2); 

       } 



} 

Пожалуйста, дайте мне знать, если это ниже реализации является правильным для выше сценарий Пожалуйста, дайте мне знать, если эта реализация является правильным, чтобы изменить код выше для государственного образца.

public partial class Form1 : Form 
{ 
    void GenerateControl(iState state) 
    { 
     switch (state.value) 
     { 
      case 1: 
       GenerateControlforTab1(); 
       break; 

      case 2: 
       GenerateControlforTab2(); 
       break; 

     } 
    } 
    void GenerateControlforTab1() 
    { 

    } 

    void GenerateControlforTab2() 
    { 

    } 


private void tabControl1_SelectedIndexChanged(object sender, EventArgs e) 
    { 

    IState state = new State() 

     if (tabControl1.SelectedTab.Name.Equals("tabPage1")) 
     { 
      state.value =1  ;  } 
     else if (tabControl1.SelectedTab.Name.Equals("tabPage2")) 
     { 
      state.value =2; 
     } 
     this.GenerateControls(); 
    } 
} 

interface iState { 
    void GenerateControls(); 
} 
+0

Каково ваше «требование» и почему вы это делаете: динамическое создание элементов управления. вы заметили, что вы всегда очищаете tabPage1 – OlimilOops

+0

Привет, я скорректировал код. Требование находится на клике определенной вкладки, контроллеры dynmic должны быть addesd на основе определенных условий, полученных из базы данных. В настоящее время я только концентрируюсь на дизайне, поэтому не звоню из базы данных. – user359562

ответ

0

MVC design pattern.

+0

можете ли вы изменить код выше, используя mvc? – user359562

+0

, пожалуйста, предложите. – user359562

3

Вы попытались реализовать шаблон состояния, но есть некоторые ошибки. Одним из видов использования шаблона State является удаление условных операторов из вашего кода путем создания интерфейса состояния и реализации различных состояний из него. Но вы использовали switch вместо ifs.And в функции tabControl1_SelectedIndexChanged вы снова используете ifs. Вы создали интерфейс iState и напрямую инстанцировали его. Но я думаю, вам нужно будет создать определенную конкретную реализацию на интерфейсе iState, где должны быть введены коды состояния. Вы можете взглянуть на «Основные шаблоны проектирования O'REILLY Head», глава 10 для руководства.

Смежные вопросы