logo资料库

《Java设计模式》模拟试题参考答案及评分标准-刘伟(20180723).pdf

第1页 / 共14页
第2页 / 共14页
第3页 / 共14页
第4页 / 共14页
第5页 / 共14页
第6页 / 共14页
第7页 / 共14页
第8页 / 共14页
资料共14页,剩余部分请下载后查看
《Java 设计模式》模拟试题参考答案及评分标准 教材:刘伟. Java 设计模式. 北京: 清华大学出版社, 2018. ISBN: 9787302488316 【说明:如有意见和建议,请通过电子邮箱 weiliu_china@126.com 与作者联系!】 模拟试题一 一、选择题(每题 2 分,共 30 分) (1) C (9) A (2) A (10) B (3) A (11) C (4) D (12) A (5) B (13) C (6) C (14) B (7) D (15) D (8) B 二、填空题(每题 1 分,共 10 分) 1. 里氏代换原则 2. 迪米特法则 3. 简单工厂 4. 建造者 5. 外观 6. 享元 7. 职责链 8. 解释器 9. 状态 10. 访问者 三、综合应用题(每题 12 分,共 60 分) 1. 开闭原则的定义:软件实体应该对扩展开放,对修改关闭。【4 分】 说明:【8 分】 工厂方法模式代码片段如下: //抽象工厂类 public abstract class Factory { public abstract Product createProduct(); } //具体工厂类 public class ConcreteFactoryA extends Factory { public Product createProduct() { return new ConcreteProductA(); } } 在客户端存在如下代码片段: …… Factory factory; factory = new ConcreteFactoryA(); //可通过反射和配置文件来实现,修改具体工厂类无须修 改源代码 Product product; product = factory.createProduct(); 在工厂方法模式中,引入了抽象工厂类,例如上面代码中的 Factory,所有具体工厂类 1
都是 Factory 的子类(例如 ConcreteFactoryA),具体工厂类负责创建具体的产品。如果要新 增一个具体产品 ConcreteProductB,只需要对应增加一个新的具体工厂类 ConcreteFactoryB 作为 Factory 类的子类,并实现在 Factory 中声明的 createProduct()方法即可,无须修改已有 工厂类和产品类的源代码;在客户端代码中需要将 ConcreteFactoryA 改为 ConcreteFactoryB, 如果采取反射和配置文件等方式来实现的话,只需修改配置文件中存储的类名即可,客户端 代码也无须修改,完全符合开闭原则。 2. 可选择适配器(Adapter)模式和桥接(Bridge)模式来设计该模块。【4 分】 结构图:【8 分】 Chart - dc : DataCollection + display () ... dc DataCollection + read () ... ExcelReader + getData () ... BarChart PieChart TxtDataCollection + display () + display () ... ... + read () ... ExcelDataCollection - reader : ExcelReader + read () reader ... DBDataCollection + read () ... 【注:可以不用标注类里面的方法和属性。】 3. 结构图:【8 分】 UIComponent + + + + add () remove () get () operation () ... Button TextBox + operation () + operation () ... ... Container + + + + add () remove () get () operation () ... Form Panel + operation () + operation () 【注: 可以不 用 标注 类里 面的方法和 属性, 也可以 将 Form 和 Panel 直接作 为 ... ... UIComponent 的子类,但必须分别持有对 UIComponent 的关联引用。】 2
组合模式的适用场景:【4 分,可酎情计分】 (1) 在具有整体和部分的层次结构中,希望通过一种方式忽略整体与部分的差异,客户 端可以一致地对待它们。 (2) 在一个使用面向对象语言开发的系统中需要处理一个树形结构。 (3) 在一个系统中能够分离出叶子对象和容器对象,而且它们的类型不固定,需要增加 一些新的类型。 4. 可选择观察者模式。【2 分】 观察者模式的定义:定义对象之间的一种一对多依赖关系,使得每当一个对象状态发生 改变时,其相关依赖对象皆得到通知并被自动更新。【2 分】 结构图:【8 分】 Subject - observers : ArrayList + + addObserver (Observer obs) cry () ... : void : void observers Observer + response () : void ... Cat + cry () : void ... Mouse Master + response () : void + response () ... ... : void 【注:可以不用标注类里面的方法和属性,抽象观察目标类 Subject 可以省略。】 5. 可选择策略模式。【2 分】 策略模式的定义:定义一系列算法类,将每一个算法封装起来,并让它们可以相互替换, 策略模式让算法独立于使用它的客户而变化。【2 分】 结构图:【8 分】 CinemaTicket - - + + + : double : Discount price discount getPrice () setPrice (double price) setDiscount (Discount discount) ... : double : void : void discount Discount + compute (double price) : double ... StudentDiscount VIPDiscount + compute (double price) : double + compute (double price) : double ... ... ChildrenDiscount 【注:可以不用标注类里面的方法和属性。】 ... + compute (double price) : double 3
Q B N ¨ … 0 ˆ F 9 N ¨ ˜ ! N ¨ 6 ¨ ¡ 6 ¯ & % ’ & $ & ’ % ’ $ … ˆ F 4 N ¨ ˜ ! N ¨ 6 ¨ ¡ 6 ¯ ! F ! . 0 4 A 6 ˜ ! F ! . 0 4 A 6 ˜
æ 9 ˆ 5 , 8 ˜ + X N ¨ ˜ ! N ¨ 6 ¨ ¡ 6 ¯ J » Q ? ˜ 6 3 2 « . † ; p / j 0 X O W L W R Q D U U D \ 0 X O W L W R Q > @ 0 X O W L W R Q J H W , Q V W D Q F H U D Q G R P 0 X O W L W R Q L Q W J » Q ? 0 X O W L W R Q 3 D W W H U Q _ » Q ? , · 0 / ? ¨ J » 2 « X 3 + 5 ] X 9 L J Z ˛ » ¨ 6 < D ı N « 8 > | K * … 1 * 6 F ¸ ˛ » ¨ ƒ A F + | ¸ 8 ! , · ˛ » ¨ F J E M 1 L 8 ) B F ¸ ˛ » ˜ 0 X O W L W R Q , · ˛ ) . 1 † ; L P S R U W M D Y D X W L O S X E O L F F O D V V 0 X O W L W R Q ^ ˚ y 0 Z 4 + X Z ˛ » S U L Y D W H V W D W L F 0 X O W L W R Q > @ D U U D \ ^ Q H Z 0 X O W L W R Q Q H Z 0 X O W L W R Q Q H Z 0 X O W L W R Q Q H Z 0 X O W L W R Q ‘ / æ 9 · F P - S U L Y D W H 0 X O W L W R Q ^ ‘ M 1 † Ø # ¨ L ¿ j F 4 ] , · 0 Z ˛ »
S X E O L F V W D W L F 0 X O W L W R Q J H W , Q V W D Q F H ^ U H W X U Q D U U D \ > U D Q G R P @ ‘ L ¿ j + O @ 0 Z ⁄ j 4 ; 7 S X E O L F V W D W L F L Q W U D Q G R P ^ ’ D W H G Q H Z ’ D W H 5 D Q G R P U D Q G R P Q H Z 5 D Q G R P L Q W Y D O X H 0 D W K D E V U D Q G R P Q H [ W , Q W Y D O X H Y D O X H U H W X U Q Y D O X H ‘ S X E O L F V W D W L F Y R L G P D L Q 6 W U L Q J D U J V > @ ^ 0 X O W L W R Q P P P P P 0 X O W L W R Q J H W , Q V W D Q F H P 0 X O W L W R Q J H W , Q V W D Q F H P 0 X O W L W R Q J H W , Q V W D Q F H P 0 X O W L W R Q J H W , Q V W D Q F H 6 \ V W H P R X W S U L Q W O Q P P 6 \ V W H P R X W S U L Q W O Q P P 6 \ V W H P R X W S U L Q W O Q P P ‘ ‘ ˇ # 2 « . j F 9 N ' ¨ ? – ˛ ) . 1 ! . £ ˙ % 6 6 ˜ — : L Q G R Z V ; • & - 5 · _ 0 Z A 5 · ¨ fl + X 4 8 Q ? F > | A A ˜ ˇ 6 — 6 3 8 0 / 2 « . † ; p / j ˇ 6 — I L O H / L V W $ E V W U D F W ) L O H ^ D E V W U D F W ‘ D G G $ E V W U D F W ) L O H H O H P H Q W U H P R Y H $ E V W U D F W ) L O H H O H P H Q W G L V S O D \ Y R L G Y R L G Y R L G , P D J H ) L O H I L O H 1 D P H 6 W U L Q J , P D J H ) L O H 6 W U L Q J I L O H 1 D P H D G G $ E V W U D F W ) L O H H O H P H Q W U H P R Y H $ E V W U D F W ) L O H H O H P H Q W G L V S O D \ Y R L G Y R L G Y R L G ) R O G H U I L O H / L V W I L O H 1 D P H $ U U D \ / L V W 6 W U L Q J ) R O G H U 6 W U L Q J I L O H 1 D P H D G G $ E V W U D F W ) L O H H O H P H Q W U H P R Y H $ E V W U D F W ) L O H H O H P H Q W G L V S O D \ Y R L G Y R L G Y R L G 7 H [ W ) L O H I L O H 1 D P H 6 W U L Q J 7 H [ W ) L O H 6 W U L Q J I L O H 1 D P H D G G $ E V W U D F W ) L O H H O H P H Q W U H P R Y H $ E V W U D F W ) L O H H O H P H Q W G L V S O D \ Y R L G Y R L G Y R L G 9 L G H R ) L O H I L O H 1 D P H 6 W U L Q J 9 L G H R ) L O H 6 W U L Q J I L O H 1 D P H D G G $ E V W U D F W ) L O H H O H P H Q W U H P R Y H $ E V W U D F W ) L O H H O H P H Q W G L V S O D \ Y R L G Y R L G Y R L G + e ? j F ; ⁄ [ ¶ › Q ? … F Q ? 1 y A A Q ? ˜ ˇ 6 — › Q ? 5 · . ˇ 6 —
U H F H L Y H U , Q Y R N H U & R P P D Q G H [ H F X W H & R Q F U H W H & R P P D Q G V W D W H H [ H F X W H 5 H F H L Y H U D F W L R Q & O L H Q W U H F H L Y H U D F W L R Q › Q ? F 2 + X j ˇ 6 — 3 + 5 M 0 ? – 6 B ’ " r B 3 + X 6 5 … B ’ " r f 6 5 @ 6 V ¨ fl ˙ B 3 + X 6 5 … f 6 5 = - $ ´ 3 + 5 M 0 ? – X = < , · & L $ 7 ˚ B ’ " r ˆ 6 B ’ " r ´ L O … > | B ’ " r 3 + 5 M 0 ? – _ 1 › , · K 0 … = 3 + 5 M 0 ? – 6 0 4 4 8 X 0 C § @ ¿ › ˜ F Q ? 5 · . ˇ 6 — D J J U H J D W H & R Q F U H W H $ J J U H J D W H F U H D W H , W H U D W R U $ J J U H J D W H F U H D W H , W H U D W R U & R Q F U H W H , W H U D W R U I L U V W Q H [ W K D V 1 H [ W F X U U H Q W , W H P , W H U D W R U I L U V W Q H [ W K D V 1 H [ W F X U U H Q W , W H P F F 2 + X j ˇ 6 — A L 0 Z 6 8 ) B , · Ø 6 < N « M b ‡ , · G > / j M 0 ? – j 0 Z 6 8 ) B ¸ J / F } ¶ Ø ? j F } ¶ = < , · 6 8 5 · ¸ 0 Z 5 0 , · ¨ X B , · ˛ ) 2 « ] j = < , · 6 8 5 · ¸ = < , · F } ¶ Ø ? ¨ 6 < g 1 0 8 $ W ‘ B ˜ F fl } fl + X F D V H … L I 1 y & B , · A A Q ? 9 † Ø # Q ? ˆ ( 1 Q ? ˆ 1 + Q ? 1 y ˜ ˇ 6 — ; M F J E 1 + Q ? — B $ > ˇ 6 — † X 0 Z 4 * 6 E & ] fl + X J / Ø ? ¨ † ˆ ˆ ; 0 / • & ˆ ( [ F H O • & 1 y ¨ X " 9 fl + X 1 + Q ? { } . 1 ( w ! † ; S X E O L F F O D V V ’ D W D + D Q G O H U ^ « « S X E O L F Y R L G V D Y H ’ D W D L Q W L ^ « « V Z L W F K ^ F D V H fl + X ˆ E U H D N
F D V H fl + X ; 0 / • & E U H D N F D V H fl + X ( [ F H O • & E U H D N « « ‘ « « ‘ « « ‘ X : F . 1 ] ¨ g 1 X B 3 + X ’ D W D + D Q G O H U 2 « , · V D Y H ’ D W D Ø # & ¨ M 0 ? – P 0 Z ¨ F J E . ˚ fl + X / Ø ? ¨ X . 1 ] 6 * ) , · ˙ K fl = r , · V Z L W F K « F D V H « B ¨ , 8 $ V D Y H ’ D W D Ø # M h ˛ W ¨ = Y 5 $ … # { B ˜ L ! { F ¨ † M 0 ? – ˛ — , · Ø ? F M 0 ? – i $ . 1 ¨ ı N « ˛ — , · F D V H B ¨ F ¶ 0 L ˇ I ˜ ! fl + X 1 + Q ? F > | G · ˜ X 1 + Q ? ] ¨ A 6 ! 0 / Ø ? 1 > ı X 0 Z § , · 1 + 2 « ] ¨ g 1 J ‚ ) B 1 + 2 « 5 F 0 ; ¨ F J E G } 5 • & 6 § 1 + 2 « 2 « = X ƒ ] ¨ † M 0 ? – i F ˛ — 1 + 2 « M 0 i G } 5 • & £ ¨ N « i $ . 1 ¨ F J E 1 + Q ? G · > , · . 1 ( w ! † ; ) ‡ 2 « S X E O L F F O D V V ’ D W D + D Q G O H U ^ S U L Y D W H 6 W U D W H J \ V W U D W H J \ S X E O L F Y R L G V H W 6 W U D W H J \ 6 W U D W H J \ V W U D W H J \ ^ W K L V V W U D W H J \ V W U D W H J \ ‘ S X E O L F Y R L G V D Y H ’ D W D ^ V W U D W H J \ V D Y H ’ D W D ‘ ‘ S X E O L F D E V W U D F W F O D V V 6 W U D W H J \ B 1 + 2 « ^ S X E O L F D E V W U D F W Y R L G V D Y H ’ D W D ‘ S X E O L F F O D V V ’ % 6 W U D W H J \ H [ W H Q G V 6 W U D W H J \ § 1 + 2 « ^ S X E O L F Y R L G V D Y H ’ D W D ^ fl + X ˆ ‘ ‘ S X E O L F F O D V V ; 0 / 6 W U D W H J \ H [ W H Q G V 6 W U D W H J \ § 1 + 2 « ^
分享到:
收藏