大气网站建设,郑州十大平面设计公司排名,资阳网络营销顾问招聘,wordpress do_actionC#设计模式六大原则是单一职责原则、里氏替换原则、依赖倒置原则、接口隔离原则、迪米特法则、开闭原则。它们不是要我们刻板的遵守#xff0c;而是根据实际需要灵活运用。只要对它们的遵守程度在一个合理的范围内#xff0c;努为做到一个良好的设计。以下介绍C#依赖倒置原则…C#设计模式六大原则是单一职责原则、里氏替换原则、依赖倒置原则、接口隔离原则、迪米特法则、开闭原则。它们不是要我们刻板的遵守而是根据实际需要灵活运用。只要对它们的遵守程度在一个合理的范围内努为做到一个良好的设计。以下介绍C#依赖倒置原则。
依赖倒置原则Dependence Inversion Principle
依赖倒置原则Dependence Inversion Principle是程序要依赖于抽象接口不要依赖于具体实现。简单的说就是要求对抽象进行编程不要对实现进行编程这样就降低了客户与实现模块间的耦合。高层模块不应该依赖低层模块二者都应该依赖其抽象抽象不应该依赖细节细节应该依赖抽象。面向对象的开发很好的解决了这个问题一般情况下抽象的变化概率很小让用户程序依赖于抽象实现的细节也依赖于抽象。即使实现细节不断变动只要抽象不变客户程序就不需要变化。这大大降低了客户程序与实现细节的耦合度。
例如
1一般的反面设计实现
using System;
namespace ConsoleApplication
{public class HondaCar{public void Run(){Console.WriteLine(本田开始启动);}public void Turn(){Console.WriteLine(本田开始转弯);}public void Stop(){Console.WriteLine(本田开始停车);}}public class FordCar{public void Run(){Console.WriteLine(福特开始启动);}public void Turn(){Console.WriteLine(福特开始转弯);}public void Stop(){Console.WriteLine(福特开始停车);}}public class BmwCar{public void Run(){Console.WriteLine(福特开始启动);}public void Turn(){Console.WriteLine(福特开始转弯);}public void Stop(){Console.WriteLine(福特开始停车);}}public class AutoSystem{public enum CarType{Ford, Honda, Bmw};HondaCar hcar new HondaCar();FordCar fcar new FordCar();BmwCar bcar new BmwCar();private CarType type;public AutoSystem(CarType type){this.type type;}public void RunCar(){if (type CarType.Ford){fcar.Run();}else if (type CarType.Honda){hcar.Run();}else if (type CarType.Bmw){bcar.Run();}}public void TurnCar(){if (type CarType.Ford){fcar.Turn();}else if (type CarType.Honda){hcar.Turn();}else if (type CarType.Bmw){bcar.Turn();}}public void StopCar(){if (type CarType.Ford){fcar.Stop();}else if (type CarType.Honda){hcar.Stop();}else if (type CarType.Bmw){bcar.Stop();}}}class Program{public static void Main(){AutoSystem autoSystem new AutoSystem(AutoSystem.CarType.Honda);autoSystem.RunCar();autoSystem.TurnCar();autoSystem.StopCar();Console.ReadKey();}}
} 2依赖倒置原则的实现
using System;
namespace ConsoleApplication
{public interface ICar{void Run();void Turn();void Stop();}public class BmwCar : ICar{public void Run(){Console.WriteLine(宝马开始启动);}public void Turn(){Console.WriteLine(宝马开始转弯);}public void Stop(){Console.WriteLine(宝马开始停车);}}public class FordCar : ICar{public void Run(){Console.WriteLine(福特开始启动);}public void Turn(){Console.WriteLine(福特开始转弯);}public void Stop(){Console.WriteLine(福特开始停车);}}public class HondaCar : ICar{public void Run(){Console.WriteLine(本田开始启动);}public void Turn(){Console.WriteLine(本田开始转弯);}public void Stop(){Console.WriteLine(本田开始停车);}}public class AutoSystem{private ICar icar;public AutoSystem(ICar icar){this.icar icar;}public void RunCar(){icar.Run();}public void TurnCar(){icar.Turn();}public void StopCar(){icar.Stop();}}class Program{public static void Main(){AutoSystem autoSystem new AutoSystem(new HondaCar());autoSystem.RunCar();autoSystem.TurnCar();autoSystem.StopCar();Console.ReadKey();}}
}