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
, – . . .
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.
MVC Apple. , , , ViewController Presenter.
, , MVC, . Presenter , , . , , .
3. MVVM
MVVM MVP. , ViewModel. . , . MVP, . , data binding ( ). , . .. , ViewModel, .
MVVM MVP . ,
, . MVVM , .. View ViewModel. , .
. MVVM, .
. – .
– . , . , .
, . :
(Singleton)
Target-Action
(Observer)
(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/
, , , .
. -, .
, !