23种设计模式介绍(Python示例讲解)(21)

2023-04-30 来源:飞速影视
代码讲解:
在上述示例中,MusicPlayer 类是外观类,它封装了 MP3 和 FLAC 播放器对象。play_mp3 和 play_flac 方法是外观类中的简单接口,它们将客户端的请求转发给相应的播放器对象。客户端只需要使用MusicPlayer类就可以进行MP3和FLAC的播放,而不需要了解播放器的具体实现。如果需要修改或替换播放器中的对象,只需要修改外观类的实现即可,而不会影响客户端的使用。
6、享元模式(Flyweight)
享元模式(Flyweight)是一种结构型设计模式,它通过共享对象来尽可能减少内存使用和对象数量。在享元模式中,存在两种对象:内部状态(Intrinsic State)和外部状态(Extrinsic State)。内部状态指对象的共享部分,不随环境改变而改变;外部状态指对象的非共享部分,会随环境改变而改变。
实现思路:
享元模式的核心思想是尽量重用已经存在的对象,减少对象的创建和销毁,从而提高性能和节省内存。它通常适用于需要大量创建对象的场景,但又不能因为对象过多而导致内存不足或性能降低的情况。
下面是一个简单的享元模式的示例,假设我们有一个字符工厂,它可以创建不同的字符对象。在实现字符对象时,我们发现有一些字符会被频繁使用,而且它们的状态是不变的,例如空格、逗号、句号等标点符号。因此,我们可以将这些字符设计为享元对象,通过共享来节省内存。
class CharacterFactory: def __init__(self): self.characters = {} def get_character(self, character): if character in self.characters: return self.characters[character] else: new_character = Character(character) self.characters[character] = new_character return new_characterclass Character: def __init__(self, character): self.character = character def render(self, font): print(f"Rendering character {self.character} in font {font}")# 创建字符工厂factory = CharacterFactory()# 获取不同的字符char1 = factory.get_character("A")char2 = factory.get_character("B")char3 = factory.get_character(" ")char4 = factory.get_character(",")char5 = factory.get_character(" ")char6 = factory.get_character(".")# 渲染不同的字符char1.render("Arial")char2.render("Times New Roman")char3.render("Arial")char4.render("Times New Roman")char5.render("Arial")char6.render("Times New Roman")
相关影视
合作伙伴
本站仅为学习交流之用,所有视频和图片均来自互联网收集而来,版权归原创者所有,本网站只提供web页面服务,并不提供资源存储,也不参与录制、上传
若本站收录的节目无意侵犯了贵司版权,请发邮件(我们会在3个工作日内删除侵权内容,谢谢。)

www.fs94.org-飞速影视 粤ICP备74369512号