English 中文(简体)
我是否应当把最新方法放到物体内,或采用何种方法接受物体更新?
原标题:Should I encapsulate the update method inside of object or have method which accepts an object to update?

我实际上有两个问题:

  1. 我有一个标语(阶级),即我的地图集,拥有我数据库的数据。 目前,我有一份在“社区区”一带居住的单一州物体清单(名单和编号;MyClass >)。 我认为,以这种方式管理数据比较容易,我看不出从物体上穿过一等物体会如何在单一州受益(如果有人能告诉我为什么会很高兴)。 无论如何,数据可能从我的方案之外改变数据库,因此我必须经常更新数据。 为了更新我的地图册清单,我采用了一种称为“最新”的方法,以另一个类别书写,接受我的地图集清单。 这更新了清单中的所有报道。

    然而,最好在我的地图集标语中总结最新方法,因此我要说:

    foreach(MyClass obj in MyClassList) {
        obj.update();
    }
    

    如何更好地执行?

  2. 更新方法需要XML的读者。 我写了XML读物班,基本上比标准XML读物者精彩,母语是提供应用特定数据收集的语文。 如果XML的读物在MyClass物体的“继承道路”中处于任何轨道——MyClass的物体继承XML读物,因为它使用了几种方法。 我不明白为什么应该这样做。 我并不像宣布在MyClass和MyClass物体内的XML阅读器类别的例子的想法那样,意味着从数据库中简单地“记录”,而我感觉到它有办法,而其他物体则只是表面。 也许我的XML读物班应当是静态的,但C#的本地XMLReader是静态的。

任何意见都将受到高度赞赏。

问题回答

关于你的第一个问题,我建议在我的地图集中采用更新的方法。 象你一样,你可以即时发送同一物体的多份副本,也许更好的解决办法是通过更新方法直接更新原MyClass物体。

这还将给你带来额外好处,使你能够在今后更新单个物体,并且应当更加可以维持。

对于你的第二个问题,它像MyClass一样,载有数据库中的数据,使其成为一个实体。 实体标注t含有商业逻辑,因此,我认为你有一支服务班,利用XMLReader进行数据操作,然后利用接收机/发射机操纵物体中的数据。 如同以前一样,这有利于保持你的法典松散和更加可维持。

  1. 不包括该类别内的更新。 我知道,这似乎有诱惑力,因为最新的说法是“变迁”的,但这会带来依赖。 (推定)MyClass含有db数据,因为它是一个领域,代表了某些真实世界的“unit”(有形、概念或其他)状况。 如果你包含一种更新方法;现在,你回场标不仅代表某些合乎逻辑的“假设”状态,而且还负责持久性逻辑(勇敢、装载、新删除)。 更不用说设立一个处理这些责任的服务。 这涉及高度凝聚力这一设计原则。 每一类别只有1项责任(或至少是哪类责任)。 例如:坚持服务。

  2. 这个问题基本上相同,但现在,你谈论的是,使你的班子直接依赖(在这种情况下是后代)某种特定类型的持久性(书面到Xml档案),这比您的班子更普遍地依赖持久性更糟。

在试图作出设计决定时,想像这一点......关于变革的计划(不稳定、混乱或你想要称之为变革)。 如果从现在起一个月,你需要从XML信托基金转到一个数据库? 或者,如果大家突然不得不处理MyClassVariantA、MyClassVariantB、MyClassVariantC? 如果你确实必须改变自己所赢得的东西,那么通过尽量减少依赖性,就必须在申请的所有其他部分进行一系列变革。





相关问题
Anyone feel like passing it forward?

I m the only developer in my company, and am getting along well as an autodidact, but I know I m missing out on the education one gets from working with and having code reviewed by more senior devs. ...

NSArray s, Primitive types and Boxing Oh My!

I m pretty new to the Objective-C world and I have a long history with .net/C# so naturally I m inclined to use my C# wits. Now here s the question: I feel really inclined to create some type of ...

C# Marshal / Pinvoke CBitmap?

I cannot figure out how to marshal a C++ CBitmap to a C# Bitmap or Image class. My import looks like this: [DllImport(@"test.dll", CharSet = CharSet.Unicode)] public static extern IntPtr ...

How to Use Ghostscript DLL to convert PDF to PDF/A

How to user GhostScript DLL to convert PDF to PDF/A. I know I kind of have to call the exported function of gsdll32.dll whose name is gsapi_init_with_args, but how do i pass the right arguments? BTW, ...

Linqy no matchy

Maybe it s something I m doing wrong. I m just learning Linq because I m bored. And so far so good. I made a little program and it basically just outputs all matches (foreach) into a label control. ...

热门标签