In C# ist es ratsam das Inversion of Control Principle zu befolgen. Man sollte Interfaces statt konkrete Objekte verwenden. Es ist gut für gute Encapsulation und loose coupling of code.
Außerdem tut man sich beim Unit-Testing und auch Mocking/Dependency Injection leichter.
Ich habe dazu ein Bsp. angehängt.
Mit Swift benötige ich ja nicht wirklich ein Mocking Framework. Das geht ja mit einem Dreizeiler (wie unterhalb sichtbar) sehr gut.
Nun meine Frage: Verwendet man das Inversion of Control Principle auch in Swift (hier Protocols statt Interfaces?) oder gibts andere Techniken? Für Swift habe ich im Web leider nichts gefunden. Für Objective-C hab ich ein paar Artikel gefunden wie bspw. hier:
danielsaidi.wordpress.com/2014…y-approach-to-ioc-in-ios/
Ich bin für jede Auskunft dankbar!
Alles anzeigen
Swift Mocking:
Außerdem tut man sich beim Unit-Testing und auch Mocking/Dependency Injection leichter.
Ich habe dazu ein Bsp. angehängt.
Mit Swift benötige ich ja nicht wirklich ein Mocking Framework. Das geht ja mit einem Dreizeiler (wie unterhalb sichtbar) sehr gut.
Nun meine Frage: Verwendet man das Inversion of Control Principle auch in Swift (hier Protocols statt Interfaces?) oder gibts andere Techniken? Für Swift habe ich im Web leider nichts gefunden. Für Objective-C hab ich ein paar Artikel gefunden wie bspw. hier:
danielsaidi.wordpress.com/2014…y-approach-to-ioc-in-ios/
Ich bin für jede Auskunft dankbar!
Quellcode
- interface ILogWriter
- {
- void WriteToLog(string message);
- }
- class DatabaseLogWriter : ILogWriter
- {
- public void WriteToLog(string message)
- {
- // make call to webservice and write to database
- }
- }
- class HarddriveLogWriter : ILogWriter
- {
- public void WriteToLog(string message)
- {
- File.AppendAllText(@"D:\sample.log", message);
- }
- }
- class LogManager
- {
- private ILogWriter _logWriter;
- public LogManager(ILogWriter logWriter)
- {
- _logWriter = logWriter;
- }
- public void WriteToLog(string message)
- {
- _logWriter.WriteToLog(message);
- }
- }
Swift Mocking:
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von 99s99m ()