STUNUM

面有萌色,胸有丘壑。心有猛虎,细嗅蔷薇。

嗨,我是王鑫 (@stunum),一名 Python 开发者。


Python web开发,后端以Django框架为主,前端使用Vue.js...

python设计模式之享元模式

享元模式

意义:

运用共享技术有效地支持大量细粒度的对象。

适用性:
  • 一个应用程序使用了大量的对象。
  • 完全由于使用大量的对象,造成很大的存储开销。
  • 对象的大多数状态都可变为外部状态。
  • 如果删除对象的外部状态,那么可以用相对较少的共享对象取代很多组对象。
  • 应用程序不依赖于对象标识。由于Flyweight 对象可以被共享,对于概念上明显有别的对象,标识测试将返回真值。
    举例:

    ``` class FlyweightBase(object): def offer(self): #享元基类 pass

class Flyweight(FlyweightBase): #共享享元类 def init(self, name): self.name = name

def get_price(self, price):
    print(f'产品类型:{self.name} 详情:{price}')

class FactoryFlyweight(object): #享元工厂类 def init(self): self.product = {}

def Getproduct(self, key):
    if not self.product.get(key, None):
        self.product[key] = Flyweight(key)
    return self.product[key]

if name == ‘main’: test = FactoryFlyweight() A = test.Getproduct(“高端”) A.get_price(“香水:80”) B = test.Getproduct(“高端”) B.get_price(“面膜:800”)


输出结果:

产品类型:高端 详情:香水:80 产品类型:高端 详情:面膜:800 ```

最近的文章

python设计模式之解释器模式

解释器模式意义:开发者自定义一种“有内涵”的语言(或者叫字符串),并设定相关的解释规则,输入该字符串后可以输出公认的解释,或者执行程序可以理解的动作。这种模式被用在 SQL 解析、符号处理引擎等解释器模式要实现两个核心角色: 终结符表达式:实现与文法中的元素相关联的解释操作,通常一个解释器模式中只有一个终结符表达式,但有多个实例,对应不同的终结符。终结符一半是文法中的运算单元,比如有一个简单的公式R=R1+R2,在里面R1和R2就是终结符,对应的解析R1和R2的解释器就是终结符表达式。 ...…

水滴石穿继续阅读
更早的文章

python设计模式之代理模式

代理模式意义:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。组成: 抽象角色:通过接口或抽象类声明真实角色实现的业务方法。 代理角色:实现抽象角色,是真实角色的代理,通过真实角色的业务逻辑方法来实现抽象方法,并可以附加自己的操作。 真实角色:实现抽象角色,定义真实角色所要实现的业务逻辑,供代理角色调用。适用性: 远程代理(Remote Proxy )为一个对象在不同的地址空间...…

水滴石穿继续阅读