该设计方式并不是有多好,只是能解决一些我想解决的问题,还有待继续完善,欢迎大家提意见帮助完善。
以下主要内容主要阐述这么设计的目的。
以ActPT2PTMatching为例。
目标
1,代码按课堂分离。
把各个课堂的差异代码隔离,防止互相影响,某个课堂中只有该课堂需要代码即该课堂独有的和公共部分代码,不会有其它课堂独有的代码。
2,逻辑和ui分离。
3,跨游戏引擎。
如果要换一个游戏引擎,只需要替换ui层的实现。
目录结构
1,base目录。
里面包含UIActSubjectAA基础ui类、ActSubjectLogicBase、ActSubjectProxyBase、ActSubjectModelBase、ActSubjectViewBase、ActSubject等基础类。
2,class-factory目录。
里面包含抽象工厂和工厂工具。ActSubjectFactoryBase为抽象工厂基类,ActSubjectFactoryXX为对应课堂的具体类工厂,ActSubjectFactoryTool为抽象工厂工具。
3,class-type-xx目录。
比如class-type-ai、class-type-xclass,分别对应aiclass和xclass相应的内容。里面是有课堂对应的ActSubjectLogicXX、ActSubjectProxyXX、ActSubjectModelXX、ActSubjectViewXX类。
极少数情况会包含相应的UIActSubjectAAXX类,正常情况下不会有,只有在该课堂下基础的UIActSubjectAA无法满足,才会从UIActSubjectAA类派生出UIActSubjectAAXX类,或者完全新建UIActSubjectAAXX类。
不想使用这套设计的方法
在新增课堂类型的适配,而某些同学不想使用这套设计,只想基于原来的实现,或者想使用另外的设计,方法如下:
1,当前课堂对应的抽象工厂ActSubjectFactoryXX是必须要新增的。ActSubjectFactoryTool中的初始化方法中也必须修改,当前课堂时要使用当前课堂抽象工厂。
2,