(All My Notes are attributed/sourced from the Resources directly preceding them.)
Summary
Dependency (Objects depending on other objects) have problems such as if something needs to change then you would have to change the Classes that the Object is dependent upon and possibly multiple other connected classes.
Dependency Injection addresses these problems via several methods
interface or abstract base class
registration of a service container
framework takes responsibility for creating the instances
A well designed Repository setup makes it easier to find and test pieces of the application being developed.
Repository Patterns have two purposes
Abstraction of the data layer
Centralising the handling of the domain objects
SOLID Coding stands for:
Single Responsibility Principle - every method/class in your app should have one single job.
Open/Close Principle - method/class should be open for extention, but closed to modification
Liskov Substitution Principle - objects in your app should be replaceable by any type derived from it without breaking the app.
Interface Segregation Principle - do not force any reliance on interfaces that are not used.
Dependency Inversion Principle - code should depend on abstractions not concrete implementation
SOLID is important because it creates code that is easily testable.