User Object: I'd like to look at you card catalogue please.
Librarian Object: We don't have a card catalogue.
User Object: Oh, you mean it's all computerized now. Technology is great. Can I use your computer then?
Librarian Object: No. We don't have a card catalogue in any form. That's an old paradigm that takes a database-oriented view. We've modernized, or should I say, refactored.
User Object: OK then. Can you direct me to the shelves filled with books? I'll just browse on my own.
Librarian Object: I'm sorry. We do not allow direct access to the books.
User Object: Well then how exactly do I find a book?
Librarian Object: Well, you go through me. That's why I'm here, of course, to make it easy for you.
User Object: So you can get a book for me?
Librarian Object: Not exactly. I don't have direct access to the books either.
User Object: Well who does?
Librarian Object: I don't know. But then, I don't need to know. All I need is to have a way to get you the book.
User Object: I must admit, I'm not yet totally sure what book I want, or if I even want any book. I was hoping to see what you have.
Librarian Object: I'd like to chat all day, but you really do need to submit a formal request to trigger any real action from me.
User Object: OK, I request to browse what you have in the library.
Librarian Object: I'm so sorry. I have to raise an exception to that. You see, "browse" is a function, and we just aren't composed like that. I don't have access to a browse function. Perhaps you'd like to make a different request.
User Object: Can you tell me what kind of requests I can make that you won't take exception to?
Librarian Object: Is this some kind of trick? I can't answer a request about what kinds of requests I can answer. That could get infinitely recursive. What kind of person do you think I am? I'll have to take exception to that also.
User Object: Can I talk to your manager?
Librarian Object: Of course not. You don't have access. You are too low of a class.
User Object: Let's try it another way then. Just let me talk to someone who can actually get me a book.
Librarian Object: But you can't do that, even though this is a public library. You have to go through me. I'm here to help you.
User Object: I'm thinking... OK, can I see what subjects of books you have in the library?
Librarian Object: Now that is something I can do. But you need to use the correct phrasing. You need to say "get subjects".
User Object: Whatever you say. Get subjects.
Librarian Object: (Yelling) GET METADATA DOT SUBJECTS!
Metadata Object: (To Librarian) Here's the list.
Librarian Object: (To User) Here's the list.
User Object: Can I just talk to that guy?
Librarian Object: What guy?
User Object: The guy that just gave you this list.
Librarian Object: There is no such guy. You're not supposed to see him. I mean, there is no such guy.
User Object: I'm gonna go talk to him.
Librarian Object: That's a violation! You must go through me for all transactions. You just don't get it, do you?
User Object: Hey guy, what other lists you got?
Metadata Object: Someone must have made you my trusted friend. I normally only work for the Librarian. So you want the list of lists? What do you say?
User Object: GET SUPERLIST.
Metadata Object: Got that right here. Here you go.
User Object: Great. So you are something like a card catalogue?
Metadata Object: Oh no. That would make me a database. I'm an object, and proud of it.
User Object: Well then, you must be the guy that can access the card catalogue.
Metadata Object: Oh no. Please don't insult me. That would make me simply a functionary around here. I am the Metadata Manager Object.
User Object: OK. I see on your list of lists here, the categories of Subject, Title, Author, and Dewey Decimal Number. And I already had a list of the Subjects you carry; the Librarian gave me that.
Metadata Object: If you are my trusted friend, you could get that straight from me.
User Object: I think I see that now. What I want is a list of books about this subject listed as Science.
Metadata Object: Are you kidding? It would take a Winnebago to hold a list that big. And something would always be changing on a list that size. You know they write books about science darn near every day. How could we keep up with that? What you want is a list of Science Subjects. Much more stable.
User Object: I'm sure you're right. I'll take one of those lists please.
Metadata Object: Magic words, please.
User Object: GET SCIENCE SUBLIST.
Metadata Object: (Shouting) GET SCIENCE DOT SUBLIST.
Science Object: (To Metadata Manager) Here you go.
Metadata Object: (To User) Here you go.
User Object: Now who is that guy?
Metadata Object: What guy?
User Object: Are you gonna pull that on me too? That guy right there that came running when you yelled out for science dot something. He kind of looks like you. Actually, the both of you also look a little like the librarian.
Metadata Object: We have some ancestors in common. I guess we inherited some of the same features. Wait a minute. Are you sure you are my trusted friend?
About an hour later ...
User Object: OK, Mr. Quantum. You don't mind if I call you Mr. Quantum, do you? I think I might be interested in your books. I kind of forgot where I am, though. You know about physics, right?
Quantum Object: I don't know about nothing like that. I just know about Quantum books.
User Object: But we're talking science and physics here, right?
Quantum Object: If you say so. You want something about Quanta or not?
User Object: I'll go out on a limb here. Can you give me a list of books about Quantum Theory?
Quantum Object: Of course, that's what I'm here for.
User Object: Thank goodness. I thought you were just gonna give me a list of lists about books about Quantum Theory.
Quantum Object: You sure do talk funny. You want the list of books or not?
User Object: Yes! Yes! GET LIST.
Quantum Object: You don't have to shout. It's right here.
User Object: This is great. I think I'd like to look at these two books here.
Quantum Object: First, you have to say the magic words and secondly you need to make two separate requests. Sorry, we're not set up here to fetch just any number of books at a time. Kind of a bug in the system. But, just between you and me, the book warehouse object has been here a long time and isn't really up to date, adaptability-wise. I'm not even sure I'd call it an honest-to-goodness "object", if you get my drift.
User Object: Did you say "book warehouse"? I'd like to go there.
Quantum Object: I'm sorry. I didn't say that. I don't know anything about a book warehouse. Now just tell me what book you want first.
User Object: Enough already. GET FEYNMANN LECTURES ON PHYSICS.
Quantum Object: Let me look something up, I'll just be a minute. OK, got the number. Now give me a few minutes and I'll be right back. (Some time later) Here you go, Feynmann's Lectures on Physics.
User Object: Oh my goodness. This is wonderful. An actual book, right here in my hands. By the way, were did you go just then?
Quantum Object: Can't tell. Can't make me.
User Object: C'mon.
Quantum Object: Nope. Do you see "show where you go to get books" anywhere on this sign up here above my head?
User Object: I give up. GET SCHROEDINGER'S CAT.
Quantum Object looks up some number and leaves, as before. But this time, the User follows him. As it turns out, he walks out the back door and across the street, where he meets a man on the sidewalk who wears an old worn overcoat.
Quantum Object: Hey, Wrapper, I got another request. Can you go get me the book with this number?
Wrapper: Sure thing.
"Wrapper" then walks a little further down the street into an old brick and mortar building called "Library".