功能需求
实现userId
和View
的一对多,以及保证线程安全,在ViewRenderManager
中修改addRender
,Remove
的实现修改一个人对应的View
。
实现
首先之前的存储是利用HashMap
存储,一个userId
对应一个View
:
1 | public class RenderInfo { |
那么我需要实现一个userId
对应多个View
,那么我肯定需要拿一个数据结构存储这多个View
并且保证线程安全,可以选择ConcurrentHashMap
代替HashMap
,然后用Vector
去存储这多个View
。
1 | private Map<String, Vector> renderers = new ConcurrentHashMap<String, Vector>(); |
我们在VideoRendererManager
里写增删,然后再外面封装一层YoumeManager
实现增删改,最后在YoumeViewManager
写业务逻辑时候再调用函数实现功能点。
那我们先修改VideoRendererManager
层:
1 | /** |
这样的话最底层的数据修改就完成了,现在修改YoumeManager
层:
1 | public VideoRendererManager.RenderInfo addRenderInfo(final String userid) { |
再修改YoumeViewManager
层:
1 | "options") (name = |
这样的话,我们的任务就解决了。