Mendesain dalam C # melalui sudut pandang mahasiswa baru -NotePad ++ # 6

Halo semuanya, nama saya Arkady, saya seorang siswa di Sekolah Tinggi Ekonomi, dan pada artikel ini kita akan berbicara tentang tugas PeerReview # 6 NotePad ++, yaitu tentang arsitektur yang cocok untuk tugas ini dan beberapa pola.





Tugas

Dalam tugas ini, tugas utamanya adalah mengimplementasikan aplikasi GUI. Saya mengusulkan untuk tidak menyimpang jauh dari topik dan segera melihat apa itu arsitektur dan bagaimana mereka dapat membantu kita dalam kasus ini.





Informasi dari posting ini tidak mencakup semua arsitektur dan pola yang ada, tetapi cukup memadai untuk pelaksanaan tugas # 6





Arsitektur aplikasi

Yang dimaksud dengan arsitektur adalah pola desain arsitektural yang mencakup seluruh aplikasi atau sebagian darinya. Bagian ini sering disebut sebagai modul. Aplikasi dibangun dari modul-modul ini. Modul dalam hal ini bukanlah   modul C # , tetapi modul arsitektural. Ini bisa berupa, misalnya, satu layar aplikasi atau beberapa layar terkait.





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





, ,





1. Apple MVC

, – MVC. , . Apple MVC,   Classic MVC





Pola Desain Apple MVC
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.





Pola desain MVP
MVP

MVC Apple. , , , ViewController Presenter.





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





3. MVVM

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





Pola desain 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