23种设计模式介绍(Python示例讲解)(22)
2023-04-30 来源:飞速影视
代码讲解:
在上述示例中,我们创建了一个CharacterFactory类来管理字符对象。当客户端需要获取一个字符时,可以调用get_character方法。如果该字符已经被创建过了,就直接返回共享的对象;否则,创建一个新的对象并将其保存到工厂中,以备下次使用。字符对象Character有一个render方法,用于渲染该字符。在实际使用中,我们可能需要给不同的字符设置不同的字体,这里只是为了演示方便,用字符串代替了字体对象。通过享元模式,我们可以共享多个相同的字符对象,从而减少内存使用和对象数量。在这个例子中,如果没有使用享元模式,我们可能需要创建多个空格、逗号和句号对象,而这些对象的状态都是不变的,这样就会导致内存浪费。通过使用享元模式,我们可以将这些相同的对象共享起来,避免重复创建对象,从而提高性能和节省内存。
需要注意的是,享元模式并不是万能的,它适用于需要大量创建相同对象的场景。如果对象的数量不大,或者对象状态变化频繁,那么使用享元模式可能会增加代码复杂度,而且也不一定能够带来性能提升。因此,在使用享元模式时需要仔细考虑是否适合当前场景。
7、代理模式(Proxy)
代理模式(Proxy)是一种结构型设计模式,它允许在访问对象时添加一些额外的行为。代理类充当客户端和实际对象之间的中介。客户端通过代理来访问实际对象,代理在访问实际对象前后执行一些额外的操作,例如权限检查、缓存等。
代理模式包含三个角色:抽象主题(Subject)、真实主题(Real Subject)和代理主题(Proxy Subject)。其中,抽象主题定义了真实主题和代理主题的公共接口;真实主题是实际执行操作的对象;代理主题通过实现抽象主题接口,控制对真实主题的访问。
以下是代理模式的 UML 类图:
------------- ----------------- --------------- | Subject |<----| RealSubject | | ProxySubject | ------------- ----------------- --------------- | request()| | request() | | request() | ------------- ----------------- ---------------
本站仅为学习交流之用,所有视频和图片均来自互联网收集而来,版权归原创者所有,本网站只提供web页面服务,并不提供资源存储,也不参与录制、上传
若本站收录的节目无意侵犯了贵司版权,请发邮件(我们会在3个工作日内删除侵权内容,谢谢。)
www.fs94.org-飞速影视 粤ICP备74369512号