技术开发 频道

体系结构的历险

【IT168 技术文章】

    这篇吸引人的练习探究了体系结构和设计方面的关系,并着重提出了它们可能对应用程序的编码和性能产生影响的方式。

    每个人都同意好的体系结构是最基本的,但是并不是在日常的工作中都明白它的含意。本文用了一个例子来说明在一个小规模下的体系结构和设计的关系-- 但是即便在最大的组件解决方案也要用到相同的思想。

    我把它作为一个练习组织起来,其后是我的解答和讨论。先做练习吧 !

    练习

    下面,您将寻找对于一个图书馆管理系统的需求摘要及部分的类模型。仔细的阅读它们,确认您理解了借阅的规则。然后回答以下问题

    问题 1
    为什么既要有 LibraryBook 类又要有 LibraryBookCopy 类?
    问题 2
    LibrarySystem 对象的目的是什么?当然我们寻找的类就是这个系统!
    问题 3
    画出借一本书的顺序图(从图书馆找出书)-- 开始于 LibrarySystem.checkOut(aLibraryBookCopy, aLibraryUser)

    图书馆需求

    我们为正在设计一个图书馆借书系统。图书馆系统的一个需求是它允许人们在图书馆进行注册以后借阅一本书籍,但必须满足以下系列三个条件:

    1.用户不能同时借阅超过最大数量的书籍。最大数量依据用户类型:一个成年用户每次可以最多借 7 本书籍,而未成年人最多是 4 本。
    2.用户不能同时借阅两本相同的书籍。
    3.书籍必须可用于出借:书籍不能被预定也不能再同时借给其它用户。

    如果这些条件能被满足,那么书籍就可以被借阅一段固定的时间。

    图书馆类模型

    图 1 — 图书馆系统的部分类模型

    

    解答
    A1 — 既然很多信息会在 LibraryBook 中共享,我们把书名(LibraryBook)和它的所有复本(LibraryBookCopy)区分开来。举个例子,要预定书 — 系统就可以决定分配哪一本复本,亦或买本新的。 注意到这并不是由在此所提出的需求摘要所暗示的。

    A2 — LibrarySystem 类可能叫 Library 的名字更好一点,但就象你将在下面看到的它当然需要有一定的责任。

    A3 — 这里并没有确定的答案 — 两个可能的答案展示在图 2 和图 3 — 它们将引起我们的讨论。

    图 2 — 对于向用户借出图书馆书籍的设计 #1

    

0
相关文章