标签:原则 汽车 函数 情商 方法 技术 class 提高 veh
#region 车辆接口和实现 interface IVehicle { void Run(); } class Car : IVehicle { public void Run() { Console.WriteLine("Car is Running"); } } class Truck : IVehicle { public void Run() { Console.WriteLine("Truck is Running"); } } #endregion
驾驶员类:
class Driver { private IVehicle _vehicle; public Driver(IVehicle vehicle) { _vehicle = vehicle; } public void Drive() { _vehicle.Run(); } }
服务调用方:
var driver = new Driver(new Car());//开汽车 driver = new Driver(new Truck());//开卡车 driver.Drive(); //这时候你会发现,如果小女生想要开坦克的话,目前是满足不了的 //因为Driver构造参数传递的是IVehicle接口,不是ITank接口 //如果想要满足小女生开坦克上街的愿望,就必须改造Driver,传递ITank接口,请看下一个例子 Console.ReadKey();
第二版的实现=》小女生能开坦克,但是却不能开汽车了
class Driver { private ITank _tank; public Driver(ITank tank) { _tank = tank; } public void Drive() { _tank.Run(); } }
var driver = new Driver(new HeavyTank());//开坦克 driver.Drive(); // 这时候你会发现, 小女生能开坦克上街了,但是你又会发现,小女生现在只会开坦克了,不会开车了 // 问题出现在哪里呢? // 我们把一个胖接口(ITank)传递进来,这个胖接口中有一个我们永远用不到的功能,就是fire。 // 所以现在这个设计是违反了接口隔离原则 // 具体改造请看下一个例子 Console.ReadKey();
#region 车辆接口和实现 interface IVehicle { void Run(); } class Car : IVehicle { public void Run() { Console.WriteLine("Car is Running"); } } class Truck : IVehicle { public void Run() { Console.WriteLine("Truck is Running"); } } #endregion
interface IWeapon { void Fire(); }
interface ITank:IVehicle,IWeapon { } class LightTank : ITank { public void Fire() { Console.WriteLine("Boom!"); } public void Run() { Console.WriteLine("Ka Ka Ka!"); } } class HeavyTank : ITank { public void Fire() { Console.WriteLine("Boom!!!!!!!!"); } public void Run() { Console.WriteLine("Ka!!! Ka!!!! Ka!!!!!!"); } }
驾驶员类:
class Driver { private IVehicle _vehicle; public Driver(IVehicle vehicle) { _vehicle = vehicle; } public void Drive() { _vehicle.Run(); } }
服务调用方:
//接口隔离的原则是 服务的调用方不会都要 //本例子中服务的调用方的需求很简单,这是要求会run,不要求fire //因此原先的ITank接口中自己包含的fire和run就符合胖接口的规则,他提供了多余的接口给调用方 //因此把ITank接口隔离开是对的 var driver = new Driver(new HeavyTank());//开坦克 driver.Drive(); driver = new Driver(new Car());//开汽车 driver.Drive(); Console.ReadKey();
标签:原则 汽车 函数 情商 方法 技术 class 提高 veh
原文地址:https://www.cnblogs.com/schangxiang/p/11223694.html