Java # 设计模式 Design Pattern 练习
练习1-AudioClipManager
给定源代码AudioClipManager。此类可防止同时播放两个音频剪辑。
- 在实施过程中必须解决哪些设计问题?
- 使用了什么设计模式?
- 使用类图来解释问题的解决方案,并使用 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
图书馆
给定图书馆的源代码
- 您认识哪些设计模式?
- 绘制相应的类图,包括 UML 表示法中设计模式的表示!
根据Bibliothek中的源代码,可以画出设计类图:
情况1:
上图用到了Strategie Pattern 也就是TemplateClass Pattern。内容类 (Context)Bibliothek使用接口Aufnehmen(Strategy)。对于一本书(Buch)在Bibliothek中有两个确切的策略(Strategie): SortiertesAufnehmen, EinfachesAufnehmen。
情况2:
也使用到了FactoryMethod 模式。内容类(Creator)在构造函数的参数(variante)时决定了是将书籍库创建/产生为ArrayList还是LinkedList。
欢迎阅读,以及欢迎指出不足之处,如果点赞就更好了;
祝您学习愉快~😊😊😊