みなさん、こんにちは。私の名前はアルカディです。私は高等経済学部の学生です。この記事では、PeerReview#6 NotePad ++タスク、つまりこのタスクに適したアーキテクチャといくつかのパターンについて説明します。
タスク
この割り当てでは、主なタスクはGUIアプリケーションを実装することです。私は、トピックから大きく逸脱しないことを提案し、アーキテクチャとは何か、そしてこの場合にそれらがどのように役立つかをすぐに見ていきます。
この投稿の情報は、既存のすべてのアーキテクチャとパターンを網羅しているわけではありませんが、タスク#6の実装には十分です。
アプリケーションアーキテクチャ
アーキテクチャ、我々は、アプリケーション全体またはその一部をカバーし、建築デザインパターンを意味します。この部分は、モジュールと呼ばれることがよくあります。アプリケーションはこれらのモジュールから構築されます。この場合のモジュールは C# モジュールではなく、アーキテクチャモジュールです。これは、たとえば、単一のアプリケーション画面または複数の関連画面にすることができます。
. -, , . -, - , . , . . .
, ,
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/
, , , .
. -, .
, !