zoukankan      html  css  js  c++  java
  • Factory模式的学习

    using System;
    using System.Windows.Forms;
    namespace Factory
    {
     public abstract class Road
     {}
     public abstract class Builld
     {}
     public abstract class Tunnel
     {}
     public abstract class Jungle
     {}
     public abstract class FacilitiesFactory
     {
      public abstract Road CreateRoad();
      public abstract Builld CreateBuilld();
      public abstract Tunnel CreateTunnel();
      public abstract Jungle CreateJungle();
     }


     public class GameManager
     {
      Road road;
      Builld builld;
      FacilitiesFactory facilitiesFactory;
      public GameManager(FacilitiesFactory facilitiesFactory)//只有此处可变化,可通过配置文件变化
      {
       this.facilitiesFactory=facilitiesFactory;
      }
      public void BuildFacilitiles()
      {
       road=this.facilitiesFactory.CreateRoad();
       builld=this.facilitiesFactory.CreateBuilld();
      }
      public void Run()
      {
       MessageBox.Show(road.GetType().ToString());
       MessageBox.Show(builld.GetType().ToString());
      }
     }
     public class Test
     {
      public static void Main()
      {
       GameManager g=new GameManager(new MordenFacilitiesFactory());
       g.BuildFacilitiles();
      }
     }

     public class MordenRoad:Road
     {}
     public class MordenBuilld:Builld
     {}
     public class MordenTunnel:Tunnel
     {}
     public class MordenJungle:Jungle
     {}
     public class MordenFacilitiesFactory:FacilitiesFactory
     {
      public override Road CreateRoad()
      {
       return new MordenRoad();
      }
      public override Builld CreateBuilld()
      {
       return new MordenBuilld();
      }
      public override Tunnel CreateTunnel()
      {
       return new MordenTunnel();
      }
      public override Jungle CreateJungle()
      {
       return new MordenJungle();
      }
     }

     public class ClassicRoad:Road
     {}
     public class ClassicBuilld:Builld
     {}
     public class ClassicTunnel:Tunnel
     {}
     public class ClassicJungle:Jungle
     {}
     public class ClassicFacilitiesFactory:FacilitiesFactory
     {
      public override Road CreateRoad()
      {
       return new ClassicRoad();
      }
      public override Builld CreateBuilld()
      {
       return new ClassicBuilld();
      }
      public override Tunnel CreateTunnel()
      {
       return new ClassicTunnel();
      }
      public override Jungle CreateJungle()
      {
       return new ClassicJungle();
      }
     }
    }

  • 相关阅读:
    虚拟机linux下git clone 报SSL connect error错误
    TooManyRedirects错误
    windows2008 使用 opencv_python 出现 DLL load failed错误
    禁止别人通过开发人员工具查看网站代码
    pipreqs 执行报错问题
    Vue-router 报NavigationDuplicated的解决方案
    git 记住用户密码
    获取python所有依赖包
    修改pip的安装源
    使用pycharm发布python程序到ubuntu中运行
  • 原文地址:https://www.cnblogs.com/kuailewangzi1212/p/343388.html
Copyright © 2011-2022 走看看