新入生の目を通してC#でデザインする-NotePad ++#6

みなさん、こんにちは。私の名前はアルカディです。私は高等経済学部の学生です。この記事では、PeerReview#6 NotePad ++タスク、つまりこのタスクに適したアーキテクチャといくつかのパターンについて説明します。





タスク

この割り当てでは、主なタスクはGUIアプリケーションを実装することです。私は、トピックから大きく逸脱しないことを提案し、アーキテクチャとは何か、そしてこの場合にそれらがどのように役立つかをすぐに見ていきます。





この投稿の情報は、既存のすべてのアーキテクチャとパターンを網羅しているわけではありませんが、タスク#6の実装には十分です。





アプリケーションアーキテクチャ

アーキテクチャ、我々は、アプリケーション全体またはその一部をカバーし、建築デザインパターンを意味します。この部分は、モジュールと呼ばれることがよくあります。アプリケーションはこれらのモジュールから構築されます。この場合のモジュールは C# モジュールではなく、アーキテクチャモジュールです。これは、たとえば、単一のアプリケーション画面または複数の関連画面にすることができます。





. -, , . -, - , . , . . .





, ,





1. Apple MVC

, – MVC. , . Apple MVC,   Classic MVC





AppleMVCデザインパターン
Apple MVC

, – . . .





  • M – Model. , , . UI (user interface). , . ,





  • V – View. – . , . – , Controller. #- Form . .





  • C – Controller. . , View, , . .. , , .





. , . , TabBarController . .





MVC – .  ( ).  MVC Apple. ViewController View. - . , . 





ViewController . , View. . «Massive View Controller»





, – . - , ViewController, .





2. MVP

MVC MVP. ViewController – , - , View, Presenter.





MVPデザインパターン
MVP

MVC Apple. , , , ViewController Presenter.





, , MVC, . Presenter , , . , , .





3. MVVM

MVVM MVP. , ViewModel. . , . MVP, . , data binding ( ). , . .. , ViewModel, .





MVVMデザインパターン
MVVM

MVVM MVP . ,





, . MVVM , .. View ViewModel. , .






. MVVM, .





. – .





– . , . , .





, . :





  1. (Singleton)





  2. Target-Action





  3. (Observer)





  4. (Command)





, .. , , .





Swift, .. - , - **** C#, **** *** *** ***** *** **** , . .





1. (Singleton)

- . ,     , .





, - .





. , .





– GPS-. , . GPS, . , , . -. LocationManager, GPS-.





class NetworkManager {
  private(set) static var sharedInstance: NetworkManager = {
    let manager = NetworkManager()
    // additional setup code 
     return manager
  }() 
  private init () {
  }
  func sendRequest() {
    print("sending request")
  }
}
// main program
let networkManager = NetworkManager.sharedInstance
networkManager.sendRequest() // sending request
      
      



2. Target-Action

, , Target-Action. , .. . , , . : - . , , Target-Action. Target-Action – , , , , . : , (action), , (target). , .





, – , , . . - .





WindowsForm ,





3.

«» . , , –  ( , ) . , «» - . «» . 





, - .





– , , - . «—». , «» (publisher) (subscribers). .





interface IObservable {
  void AddObserver(IObserver o);
  void RemoveObserver(IObserver o);
  void NotifyObservers();
 } 

class ConcreteObservable : IObservable {
  private List<IObserver> observers;
  public ConcreteObservable(){
    observers = new List<IObserver>();
  }
  public void AddObserver(IObserver o){
    observers.Add(o);
  }
  public void RemoveObserver(IObserver o){
    observers.Remove(o);
  }
  public void NotifyObservers(){
    foreach (IObserver observer in observers) 
      observer.Update();
  }
}
interface IObserver {
  void Update();
 }
 class ConcreteObserver :IObserver {
   public void Update() { 
     // Some Action
   } 
 }
      
      



( c#, .. ):





  • IObservable: . : AddObserver()



     ( ())RemoveObserver()



     ( )  NotifyObservers()



    ( )





  • ConcreteObservable: IObservable. .





  • IObserver: , .  Update()



    , .





  • ConcreteObserver: IObserver





,  Update()



. . .





. - .





— , , , , , ......





.. WindowsForms , ,





https://refactoring.guru/ru/design-patterns/command






:





https://refactoring.guru/ru/design-patterns/





, , , .





. -, .





, !








All Articles