Dependency Inversion Principle
- by Chris Paine
I have been studying also S.O.L.I.D. and watched this video:
https://www.youtube.com/watch?v=huEEkx5P5Hs
01:45:30 into the video he talks about the Dependency Inversion Principle and I am scratching my head??? I had to simplify it(if possible) to get it through this thick scull of mine and here is what I came up with. Code on the marked My_modified_code my version, code marked Original DIP video version. Can I accomplish the same with the latter code? Thanks in advance.
Original:
namespace simple.main
{
class main
{
static void Main()
{
FirstClass FirstClass = new FirstClass(new OtherClass());
FirstClass.Method();
Console.ReadKey();
//tempClass temp = new OtherClass();
//temp.Method();
}
}
public class FirstClass
{
private tempClass _LastClass;
public FirstClass(tempClass tempClass)//ctor
{
_LastClass = tempClass;
}
public void Method()
{
_LastClass.Method();
}
}
public abstract class tempClass{public abstract void Method();}
public class LASTCLASS : tempClass
{
public override void Method()
{
Console.WriteLine("\nHello World!");
}
}
public class OtherClass : tempClass
{
public override void Method()
{
Console.WriteLine("\nOther World!");
}
}
}
My_modified_code:
namespace simple.main
{
class main
{
static void Main()
{
//FirstClass FirstClass = new FirstClass(new OtherClass());
//FirstClass.Method();
//Console.ReadKey();
tempClass temp = new OtherClass();
temp.Method();
}
}
//public class FirstClass
//{
// private tempClass _LastClass;
// public FirstClass(tempClass tempClass)//ctor
// {
// _LastClass = tempClass;
// }
// public void Method()
// {
// _LastClass.Method();
// }
//}
public abstract class tempClass{public abstract void Method();}
public class LASTCLASS : tempClass
{
public override void Method()
{
Console.WriteLine("\nHello World!");
}
}
public class OtherClass : tempClass
{
public override void Method()
{
Console.WriteLine("\nOther World!");
}
}