Ejemplo n.º 1
0
        static void Main(string[] args)
        {
            try
            {
                Player Player = new Player()
                {
                    Name = "菜虚鲲"
                };

                {
                    //面向细节,依赖细节
                    Alphard Alphard = new Alphard();
                    Camry   Camry   = new Camry();
                    Corolla Corolla = new Corolla();

                    Player.DriveAlphard(Alphard);
                    Player.DriveCamry(Camry);
                    Player.DriveCorolla(Corolla);
                    Console.WriteLine("*******************面向细节,依赖细节,上层使用者自行实例化下层对象并使用********************");
                    Console.WriteLine();
                }


                {
                    //面向接口,依赖细节
                    IToyota Alphard = new Alphard();
                    IToyota Camry   = new Camry();
                    IToyota Corolla = new Corolla();

                    Player.DriveToyota(Alphard);
                    Player.DriveToyota(Camry);
                    Player.DriveToyota(Corolla);
                    Console.WriteLine("*******************面向接口,依赖细节,上层使用者自行实例化下层对象并使用********************");
                    Console.WriteLine();
                }


                {
                    //面向接口,依赖工厂;使用枚举参数做对象选择条件
                    IToyota Alphard = ToyotaFactory.CreateInstance(ToyotaFactory.ToyotaType.Alphard);
                    IToyota Camry   = ToyotaFactory.CreateInstance(ToyotaFactory.ToyotaType.Camry);
                    IToyota Corolla = ToyotaFactory.CreateInstance(ToyotaFactory.ToyotaType.Corolla);

                    Player.DriveToyota(Alphard);
                    Player.DriveToyota(Camry);
                    Player.DriveToyota(Corolla);
                    Console.WriteLine("*******************面向接口,依赖工厂;使用枚举参数做对象选择条件,上层使用者不需要自行实例化下层对象,只需要按需从工厂类拿对象********************");
                    Console.WriteLine();
                }

                {
                    //面向接口,依赖工厂;使用配置做对象选择条件
                    IToyota car = ToyotaFactory.CreateInstanceConfig();
                    Player.DriveToyota(car);

                    Console.WriteLine("*******************面向接口,依赖工厂;使用配置做对象选择条件,上层使用者不需要自行实例化下层对象,只需要按需从工厂类拿对象********************");
                    Console.WriteLine();
                }

                {
                    //面向接口,依赖工厂;使用配置+反射(方便扩展)做对象选择条件
                    IToyota car = ToyotaFactory.CreateInstanceConfigReflection();
                    Player.DriveToyota(car);

                    Console.WriteLine("*******************面向接口,依赖工厂;使用配置+反射(方便扩展)做对象选择条件,上层使用者不需要自行实例化下层对象,只需要按需从工厂类拿对象********************");
                    Console.WriteLine();
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

            Console.Read();
        }
Ejemplo n.º 2
0
 public void DriveToyota(IToyota car)
 {
     Console.WriteLine($"{this.Name} driving...");
     car.Drive();
 }
Ejemplo n.º 3
0
 /// <summary>
 /// 构造过程复杂(85乱改装),使用工厂方法封装,不需要使用者改装。。。。交给工厂完成。。。这应该是工厂存在的意义和职责吧。。。
 /// </summary>
 public Fujiwara85(string name, int id, object special, IToyota IToyota1, IToyota IToyota2, IToyota IToyota3)
 {
     //我也不懂要怎么装下去了。。。。。。。
 }