【python设计模式】

7 篇文章 0 订阅
5 篇文章 0 订阅

一、创建型模式

1.1 工厂模式
1.1.1目的

直接创建对象不方便时,提供更好的方式

1.1.2工厂方法
  • 设计思想
    • 调用者无需了解类的具体实现,只需了解该类是否能够生产所需的对象**
  • 简单理解
    • 假设当下现实世界中的商店只卖一种产品,那么如何才能让不同球员在一个商店买到需要的球呢?我们需要开一个超级商店,里面什么都用
  • 软件例子
    • Django的forms
  • 其他例子
#工厂模式
class GetSoccer(object):
    def __init__(self,category):
        self.feedback = 'it is soccerballtime and this is your %s'% category
        
    @property   
    def get_feedback(self):
        return self.feedback
        

class GetBaseket(object):
    def __init__(self,category):
        self.feedback = 'it is baseketballtime and this is your %s'% category
        
    @property    
    def get_feedback(self):
        return self.feedback
    

def get_factory(category):
    if category == 'basketball':
        connector = GetBaseket
    elif category == 'soccer':
        connector = GetSoccer
    else:
        raise ValueError('we have no %s '% category)
    return connector(category)
        
def get_ball(category):
    factory = get_factory(category)
    return factory


#不同球员过来后,都只需告诉管理员,我需要什么球
soccer = get_ball('soccer')
print soccer.get_feedback
basker = get_ball('basketball')
print basker.get_feedback
baseballer = get_ball('baseball')
print baseballer.get_feedback
  • 思考
    • 如何阻止直接实例化目标类,从而使工厂方法失去意义
    • 答:使用嵌套类
1.1.3 抽象工厂模式
  • 设计思想
    • 工厂方法的组合
  • 简单理解
    • 球员到了体育用品店,跟老板说,我要篮球、篮球鞋、篮球裤,这时就需要把球类商店、鞋类商店、裤类商店整合成一个超超级市场
  • 软件例子
    • Django_factory
  • 其他例子
1.2建造者模式
  • 设计思想
    • 构建的对象组成部分较多,且各部分可能有创建顺序
    • 构建和表现分离
  • 简单理解
    • 肯德基商店,顾客需要一份套餐,收银员就是 指挥者,配餐员就是建造者(进行搭配)
  • 软件例子
    • django-query-builder
    • django-widgy
  • 其他例子
    • 页面生成器
    • 文档转换器
    • 表单创建工具
1.3原型模式
  • 设计思想
    • 获得某一对象的副本
    • 修改并添加目标对象的属性
  • 简单理解
    • 改版某本书时,创建一个副本,并修改一些信息和添加一个版本号即可
  • 软件例子
    pass
  • 其他例子
    pass

二、结构型模式

2.1 适配器模式(adapter)
2.1.1目的
  • 不要求访问他方接口或者源代码
  • 不违反开放/封闭原则

行为型模式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吴姬压酒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值