通过枚举名与类型名之间的微妙关系来省去类工厂的存在

定义类的共同接口:

1 interface IScene
2 {
3 }

定义几个测试类:

1 public class LoginScene : IScene
2 {
3 }
4 
5 public class MainScene : IScene
6 {
7 
8 }

定义枚举(注意,枚举名字需要和类名一致):

1 public enum ESceneType
2 {
3     LoginScene,
4     MainScene
5 }

定义方法,通过枚举创建类对象:

1 IScene CreateScene(ESceneType eScenes)
2 {
3     Type type = Type.GetType(eScenes.ToString());
4     IScene scene = (IScene)Activator.CreateInstance(type);
5     return scene;
6 }

测试:

 1 public class Program
 2 {
 3     static void Main(string[] args)
 4     {
 5         var scene = CreateScene(ESceneType.LoginScene);
 6         Console.WriteLine(scene.GetType());
 7 
 8         scene = CreateScene(ESceneType.MainScene);
 9         Console.WriteLine(scene.GetType());
10         Console.ReadKey();
11     }
12 }

输出结果:

缺点:不能直接查出哪些类被使用了哪些类未被使用,在进行代码清理的时候,可能会被误删除,但是可以通过枚举是否被使用来间接判断类是否被使用。

posted @ 2021-10-29 12:15  小·糊涂仙  阅读(52)  评论(0编辑  收藏  举报