日期:2014-05-17  浏览次数:20481 次

有个问题一直搞不明白 望高手帮忙解答
问题:

我有一个灯的类  它实现的两个功能 分别是开跟关  (开跟关是一对对应的功能)

在实例化这个灯时  比如实例化两个一个是灯1 另一个是灯2 ;然后分别实现它们的开功能; 然后过几天我再来实现灯1的关闭功能;这个实例化对象灯1我要是存在哪里??好让以后我想关闭它时可以准确的找到它并关闭;

这个灯每次实例化一个都是新的  比如灯3  灯4 .....  

------解决方案--------------------
不要胡乱去问“存在哪里”这种梦话,应该首先理解业务模型。如果你需要考虑到灯的位置,那么就从业务领域去分析你还有哪些对象类型没有思考到。

如果你的业务模型中根本没有必要考虑它,那么就不用考虑它。
------解决方案--------------------


一般我们在处理逻辑的时候不是吧问题孤立开来的。
 灯 灯1=new 灯();
灯1.open();
//这里处理业务逻辑
//用观察者模式看否达到关闭的条件
灯1.close();


创建对象事后不管不顾,到想起来用时很难的到的。就算找的到,现在对象已经达到什么状态了?是很难管控的
------解决方案--------------------
存在变量中,你可以将打开的灯当作一个变量赋值给一个公共变量,当需要操作时直接从这个变量获取你所要操作的灯。
------解决方案--------------------
额,这是个不是问题的问题。就像老p说滴,这个其实已经不是什么业务了

持久化一般不在俺们考虑的范围内。你想持久化怎么都成,直接序列化可不可以?像老p说的弄个变量保存可以不可以??

ps:这个灯每次实例化一个都是新的  比如灯3  灯4 .....  其实的毛病就出在这句话身上,语言,语法和逻辑木啥关系,逻辑上他是一个东西就好,你管他在内存你是不是一个。难道你会说,我写了一份word文档,然后关闭了他,接着在打开他,所以他们不是一份word了,因为在内存里他们是不同的东西??
------解决方案--------------------
如果你能保持程序一直运行的话,过几天和过几秒没有什么区别,定义一个全局变量就可以了。

否则你需要一种机制,在程序运行的时候可以恢复上次关闭时候的状态。比如把这些变量写入数据库或者文件中,这叫做“持久化”。