作者autumnk (3O6p)
看板C_Sharp
标题[问题] 不同执行绪 读到不同资料
时间Sun Mar 13 17:09:34 2016
因为原本就使用在设计模式下的架构
在抽象类别的地方使用了蛮多的static
来当作是类似全域变数的功能
(就是所有继承抽象的class,抓取相同的变数来动作)
但是现在需要使用多执行绪,来实现不同的功能
每个执行绪会包相同的设计模式的架构
但是不同的执行绪
设计模式内部的资料是要不一样的
请问这有什麽好办法解决吗
不知道有没有人看得懂我在问什麽.....
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 220.134.59.89
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_Sharp/M.1457860177.A.C7D.html
1F:→ m339606: 不明白 03/13 18:19
2F:→ ssccg: 不懂为什麽在不同class要共用的变数却在不同thread不共用.. 03/13 19:01
3F:→ ssccg: 感觉一般设计上要两套一样的会是生两套instance,不会是同 03/13 19:03
4F:→ ssccg: 一套然後写成static,再用thread去拆两套.. 03/13 19:03
5F:→ ssccg: 也许当初用static共用而不是用DI注入同一个变数就错了 03/13 19:05
6F:→ ssccg: 不过还是回你的问题,不同thread各一份可以用ThreadLocal 03/13 19:06
7F:→ GoalBased: 为了设计模式而设计模式吧.. 03/13 19:27
8F:→ Litfal: 设计模式下的架构怎麽会常用static...只有简单工厂明显用 03/14 02:39
9F:→ Litfal: 到吧。 03/14 02:39
10F:→ Litfal: 喔,还有独体模式 03/14 02:41
11F:→ Litfal: 然後你抽象类大量用到外部变数(也就是你写成static的)就要 03/14 02:43
12F:→ Litfal: 认真考虑一下你的OOAD是不是有问题... 03/14 02:44
13F:→ Litfal: 我猜你的static里面放的是config参数,请把他们的static 03/14 02:55
14F:→ Litfal: 去掉,做成instance,然後用独体模式来存取。 03/14 02:56
15F:→ Litfal: 然後你不同执行续使用不同config的需求,只需要使用不同 03/14 02:57
16F:→ Litfal: 的config instance,其他部分应该几乎不用改 03/14 02:58
这部分我有想过,不过如果是使用独体模式,在多执行绪下不是就同一笔资料了吗?
不知道是不是我理解错误。
因为现在的资料必须在执行绪下生成与修改。
我已经想好其他发法解决了,但是还是想知道有没有什麽好方法
※ 编辑: autumnk (220.134.59.89), 03/14/2016 10:43:55
後来看了一下S大的内容,发觉我想到的方法和S大说得差不多
原来这叫DI注入,又学到了新东西^^,太感谢了。
※ 编辑: autumnk (220.134.59.89), 03/14/2016 11:08:15
17F:→ Litfal: 独体模式是指你平常使用,实际上还是用instance而不是 03/14 16:48
18F:→ Litfal: static field, 多执行续只需要改成各自new instance就好 03/14 16:49
了解,感谢你的解答
※ 编辑: autumnk (220.134.59.89), 03/14/2016 18:10:53