德米特定律&工厂模式

时间:2017-11-15 10:53:54

标签: c#

我想知道下面的secnerio是否违反了得墨忒耳法。

  1. 我有2个工厂类CarFactoryBusFactory
  2. CarFactory将返回IVehicle类型的对象。
  3. 现在我有另一个包装工厂,比如VehicleFactory
  4. VehicleFactory将返回CarFactory或'BusFactory'
  5. 主要类首先会调用VehcileFactory来返回CarFactoryBusFactory
  6. 然后CarFactoryBusFactory将返回Car(比如Maruthi)或Bus类型(比如Volvo)。
  7. 然后调用Car of Bus Type的方法。
  8. 以下是示例代码

    分类:Maruthi

    public class Maruthi:IVehicle
    {
        public void MakeVehicle()
        {
            Console.WriteLine("Maruthi..");
        }
    }
    

    分类:CarFactory

    public class CarFactory:IVehicleFactory
    {
        IVehicle car;
        public IVehicle GetVehicle(string type)
        {
            switch (type)
            {
                case "Maruthi":
                    car= new Maruthi();
                    break;
            }
            return car;
        }
    }
    

    分类:VehicleFactory

    public class VehicleFactory
    {
    
        public static IVehicleFactory GetVehicleFactory (string Factorytype)
        {
            IVehicleFactory VehFact=null;
            switch (Factorytype)
            {
                case "Car":
                    VehFact = new CarFactory();
                    break;
            }
            return VehFact;
        }
    }
    

    主要

    static void Main(string[] args)
        {
            IVehicleFactory vehFact = VehicleFactory.GetVehicleFactory("Car");
            IVehicle veh = vehFact.GetVehicle("Maruthi");
            veh.MakeVehicle();
            Console.ReadLine();
        }
    

    iVehicle

    namespace LOD_ViolationorNot
    {
       public interface IVehicle
        {
           void MakeVehicle();
        }
    }
    

0 个答案:

没有答案