namespace ConsoleIdeaTest
{
internal class Program
{
static void Main(string[] args)
{
var car1 = new Car();
var truck1 = new Truck();
var driver1 = new CarDriver("Jerry");
var driver2 = new TruckDriver("Tom");
driver1.Drive(car1);
driver1.Drive(truck1);
driver2.Drive(car1);
driver2.Drive(truck1);
}
}
abstract class Vehicle
{
public int _speed;
public abstract void Run(IDriver driver);
}
class Car:Vehicle
{
public override void Run(IDriver driver)
{
if(driver.GetType() == typeof(CarDriver))
{
_speed = 120;
}
else
{
_speed = 80;
}
}
}
class Truck:Vehicle
{
public override void Run(IDriver driver)
{
if (driver.GetType() == typeof(TruckDriver))
{
_speed = 100;
}
else
{
_speed = 70;
}
}
}
interface IDriver
{
void Drive(Vehicle vehicle);
}
class CarDriver:IDriver
{
private string _name;
public CarDriver(string name)
{
_name = name;
}
public void Drive(Vehicle vehicle)
{
vehicle.Run(this);
Console.WriteLine("CarDriver {0} is driving the {1},and its speed is {2}",this._name, vehicle.GetType().Name, vehicle._speed);
}
}
class TruckDriver:IDriver
{
private string _name;
public TruckDriver(string name)
{
_name = name;
}
public void Drive(Vehicle vehicle)
{
vehicle.Run(this);
Console.WriteLine("TruckDriver {0} is driving the {1},and its speed is {2}",this._name,vehicle.GetType().Name,vehicle._speed);
}
}
}
C# 接口,以及用接口来解耦合
于 2022-07-02 18:46:29 首次发布