Hallo allerseits, mein Name ist Arkady, ich bin Student an der Higher School of Economics, und in diesem Artikel werden wir ĂŒber die PeerReview # 6 NotePad ++ - Aufgabe sprechen, nĂ€mlich ĂŒber Architekturen, die fĂŒr diese Aufgabe geeignet sind, und einige Muster.
Die Aufgabe
In dieser Aufgabe besteht die Hauptaufgabe darin, eine GUI-Anwendung zu implementieren. Ich schlage vor, nicht weit vom Thema abzuweichen und sofort zu prĂŒfen, was Architektur ist und wie sie uns in diesem Fall helfen kann.
Die Informationen aus diesem Beitrag decken nicht alle vorhandenen Architekturen und Muster ab, sind jedoch fĂŒr die Implementierung von Aufgabe 6 ausreichend
Anwendungsarchitekturen
Mit Architektur meinen wir ein architektonisches Entwurfsmuster, das die gesamte Anwendung oder einen Teil davon abdeckt. Dieser Teil wird oft als Modul bezeichnet. Die Anwendung wird aus diesen Modulen erstellt. Module sind in diesem Fall keine C # -Module, sondern Architekturmodule. Dies kann beispielsweise ein einzelner Anwendungsbildschirm oder mehrere verwandte Bildschirme sein.
. -, , . -, - , . , . . .
, ,
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/
, , , .
. -, .
, !