簡體   English   中英

課堂互動設計

[英]class interaction design

可以說我有這樣的編碼

class Normal_Mode;
class Fast_Mode;
class File_Control; //handles all operations with reading/writing in file
class Main_Control {
 private:
 some_class *root; //all other classes need access to root pointer since there is all the data(binary tree)
 File_Control *c_file_control;
 Fast_Mode *c_fast_mode;
...
}

Main_Control::Main_Control ( int argc, char* argv[]) {
  ...
  if ( argc > 1 ) {
   c_fast_mode = new Fast_Mode(argc, argv[]);
  } else {
   c_normal_mode = new Normal_Mode();
  };
  ...
};

int main (int argc, char* argv[]) {
 Main_Control c_main_control(argc,argv);
 return 0;
}

可以說用戶輸入的argc> 1,並且我很樂意使用Fast_Mode類中的用戶輸入來處理內容,但是當我完成操作后,想要在Fast_Mode中將內容寫入文件或從文件中讀取內容時,就可以這樣做。 現實世界中的人們如何訪問File_control類?

它們是否使一些全局數組充滿指向這些僅需要1個實例的類的指針。

他們是否將指針傳遞給Fast_Mode和其他類,以便可以將其存儲在私有成員中以供訪問。

或者他們始終根據需要的時間構造/銷毀此類。

以及如何使用這樣的* root指針來存儲所有實際數據,而許多其他類需要訪問它

還是我的設計思路完全錯誤,現實世界中的人們以其他方式這樣做嗎?

我真的不知道您要通過這個實現什么:如果可能的話,使您的目標更加明確,但是我要說的是,人們通常會創建一個稱為“模式”的抽象接口,然后讓Normal_Mode和Fast_Mode都實現它。 這樣,您可以編寫以下代碼:

class Main_Control {
    private:
       some_class *root; //all other classes need access to root pointer since there is all the data(binary tree)
       File_Control *c_file_control;
       Mode *c_mode;
       ...
};

然后可以將其設置為:

if ( argc > 1 ) {
   c_mode = new Fast_Mode(argc, argv[]);
} else {
   c_mode = new Normal_Mode();
};

因此,您只需將公共函數放在Mode接口中,以使它們的行為相同,但是可以將它們放在相同的mode變量中。 要了解有關類繼承和多態的更多信息,請參見此處 我希望這能回答您的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM