Python设计模式:代理模式
发布时间:2020-12-20 10:06:30 所属栏目:Python 来源:网络整理
导读:代理通常就是一个介于寻求方和提供方之间的中介系统。其核心思想就是客户端(寻求方)没有直接和提供方(真实对象)打交道,而是通过代理对象来完成提供方提供的资源或操作。 代理其实就是封装实际服务对象的包装器或代理人。代理可以为其包装的对象提供附加
代理通常就是一个介于寻求方和提供方之间的中介系统。其核心思想就是客户端(寻求方)没有直接和提供方(真实对象)打交道,而是通过代理对象来完成提供方提供的资源或操作。 代理其实就是封装实际服务对象的包装器或代理人。代理可以为其包装的对象提供附加功能,而无需改变此对象的代码。代理模式的主要目的是为其他对象提供一个代理者或占位符,从而控制对实际对象的访问。 三种常见的不同类型或不同应用场景下的代理:
代理模式注意点:
简单示例: from abc import ABCMeta,abstractmethod class HouSEOwner(metaclass=ABCMeta): """房主抽象类:都可以将房子出租""" @abstractmethod def rent_house(self,rental): pass class Landlord(HouSEOwner): 真实对象:房主""" def __init__(self): self.account = 0 self.house_key = 'house key' 收取租金,并房屋钥匙给出租的人 self.account += rental return self.house_key HouseAgent: 代理类:中介,代理房东出租他们的房子 0 self.house_resource = [] # 房源肯定不只一个,这里就只简单放一个了 self.house_resource.append(Landlord()) 通常而言,代理类和表示真实对象的类具有相同的接口 表示此方法给真实对象某个操作进行的代理操作 收取租金和中介费,并将房子出租给客户 agency_fee house_key = self.house_resource[0].rent_house(rental) house_key Renter: 客户端类:租户(self): self.account = 10000 self.house_key = None self.house_agent = HouseAgent() find_house(self): 在某一个中介(代理对象)处出租房子 self.house_key = self.house_agent.rent_house(3000,1000) print("You've rented a house!") if __name__ == '__main__': ? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |