文章目录
一、创建型模式
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目的
- 不要求访问他方接口或者源代码
- 不违反开放/封闭原则