Java # 设计模式 Design Pattern 练习

Java # 设计模式 Design Pattern 练习

练习1-AudioClipManager

给定源代码AudioClipManager。此类可防止同时播放两个音频剪辑。

  1. 在实施过程中必须解决哪些设计问题?
  2. 使用了什么设计模式?
  3. 使用类图来解释问题的解决方案,并使用 UML 符号将设计模式绘制到类图中!

针对问题1和2,在给定的源代码中:

public class AudioClipManager implements AudioClip {
   private static final AudioClipManager myInstance = 
                               new AudioClipManager();
   private AudioClip prevClip;
   private AudioClipManager() {
   }
   public static AudioClipManager getInstance() {
      return myInstance;
   }}

通过确保此类只有一个实例 (myInstance) 可以防止这种情况。这就是为什么该模式被称为单例模式(Singleton Pattern)
myInstance 实例被定义为私有的、静态的和不可覆盖的(最终)变量,并通过调用 AudioClipManager() 构造函数(直接在构造函数中或创建属性时)创建。此实例通过调用静态 getInstance() 方法提供给客户端类。
在这里插入图片描述

练习2-Bibliothek

图书馆
给定图书馆的源代码

  1. 您认识哪些设计模式?
  2. 绘制相应的类图,包括 UML 表示法中设计模式的表示!
    根据Bibliothek中的源代码,可以画出设计类图:
    在这里插入图片描述

情况1:
上图用到了Strategie Pattern 也就是TemplateClass Pattern。内容类 (Context)Bibliothek使用接口Aufnehmen(Strategy)。对于一本书(Buch)在Bibliothek中有两个确切的策略(Strategie): SortiertesAufnehmen, EinfachesAufnehmen。
在这里插入图片描述

情况2:
也使用到了FactoryMethod 模式。内容类(Creator)在构造函数的参数(variante)时决定了是将书籍库创建/产生为ArrayList还是LinkedList。
在这里插入图片描述


欢迎阅读,以及欢迎指出不足之处,如果点赞就更好了;
祝您学习愉快~😊😊😊

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值