功能需求
实现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 | (name = "options") |
这样的话,我们的任务就解决了。