Skip to main content

You are not logged in. Your edit will be placed in a queue until it is peer reviewed.

We welcome edits that make the post easier to understand and more valuable for readers. Because community members review edits, please try to make the post substantially better than how you found it, for example, by fixing grammar or adding additional resources and hyperlinks.

2
  • 1
    The second case; the first approach is essentially a convoluted/raundabout way to do a regular iterator (not a cursor). Cursor, as described here, is essentially a special case of the memento pattern; it has a special interface visible only to the aggregate (this is either done using an access modifier of some sort, or by contract/convention, depending on the language), and what the aggregate does is it transfers the responsibility of keeping track of the current position to the client (and only that), without exposing internal state (kind of like a stateless service). Commented Nov 11, 2019 at 18:33
  • @FilipMilovanović You are right, I should have checked the footnote: "Cursors are a simple example of the Memento (316) pattern and share many of its implementation issues." So a cursor is the Memento class and an aggregate is the Originator class of the Memento pattern. Could you post this as an answer so that I can accept it? Commented Nov 11, 2019 at 20:45