文章分类 - OOP设计模式DesignPattern
摘要:# 工厂模式是对简单工厂中的工厂类进一步解耦,解决了简单工厂方法中的如果有新的产品而硬编码问题。# 工厂模式,如有新增新的对象,只要再实现一个对应的工厂类,就完成了扩展,无需修改以前的代码。# 抽象工厂的核心: 普通工厂产出是一个产品(奥迪,宝马,奔驰的小汽车实例),抽象工厂产出是一个抽象(接口,
阅读全文
摘要:# 中介者模式应用场景# 当有多个对象彼此间相互交互的时候,自然就会想到对象间的耦合度过高,解决办法就是封装对象间的交互行为,因此就能想到中介者模式就是干这行的。# 中介者模式优点# 通过让对象彼此解耦,增加对象的复用性# 通过将控制逻辑集中,可以简化系统维护# 通过中介者使一对所变成了一堆一,便于
阅读全文
摘要:# 原型模式(Prototype Pattern): 使用原型实例指定待创建对象的类型,并且通过复制这个原型来创建新的对象。#原型模式使用场景# 1)资源优化场景。类初始化需要消耗非常多的资源,这个资源包括数据,硬件资源等,可通过原型复制避免这些消耗# 2)通过new产生一个对象需要非常繁琐的数据准
阅读全文
摘要:场景 在大多数饭店中,当服务员已经接到顾客的点单,录入到系统中后,根据不同的菜品,会有不同的后台反应。 比如,饭店有凉菜间、热菜间、主食间,那当服务员将菜品录入到系统中后,凉菜间会打印出顾客所点的凉菜条目,热菜间会打印出顾客所点的热菜条目,主食间会打印出主食条目。 可以将该系统设计成前台服务员系统和
阅读全文
摘要:大话设计模式: 状态模式状态模式(State Pattern):当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。应用场景:当控制一个对象的状态转换的条件表达式过于复杂时,把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的判断逻辑简化(当一个对象的行为取决于它的状态
阅读全文
摘要:# 享元模式:享元模式是一种用于解决资源和性能压力时会使用到的设计模式,它的核心思想是通过引入数据共享(类__new__)来提升性能。# 其实享元模式的实现与单例模式的实现方式十分相似,比如:# 单例模式实现的是一个类对象只允许有一个实例对象,而享元模式则是一个类对象只允许创建不同类型的对象,这样保
阅读全文
摘要:# 代理模式是结构设计模式的例子。这个模式的目的是要创建一个真实对象或类的代理。# 代理模式有3个必要的元素:# 真实的对象(执行业务逻辑,被代理的对象)# 代理类(用户请求的一个接口,对真实目标的保护)# 用户(获取任务的用户请求)# 代理模式存在在以下的情形中:# 为真实目标类创建一个对象的代价
阅读全文
摘要:# 在提出桥梁模式的时候指出,桥梁模式的用意是"将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者可以独立地变化"。# 这句话有三个关键词,也就是抽象化、实现化和脱耦。# 桥接,是像一座桥连接两岸,而Python程序设计中的桥接指的是抽象部分和实体部分的连接,简
阅读全文
摘要:#!/usr/bin/env python # -*- encoding: utf-8 -*- ''' @Author: Victor @Date: 2020/8/20 @function: '' ''' # 外观模式属于结构型模式(另外两种是创建型比如工厂和行为型比如策略) # 外观模式的核心在于
阅读全文
摘要:意图:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。角色: 抽象类(AbstractClass):定义抽象的原子操作(钩子操作);实现一个模板方法作为算法的骨架。 具体类(ConcreteClass):实现原子操作适用场
阅读全文
摘要:意图:定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。角色: 抽象策略(Strategy) 具体策略(ConcreteStrategy) 上下文(Context)适用场景: 许多相关的类仅仅是行为有异。“策略”提供了一种用多个行为中的一个行为来
阅读全文
摘要:意图:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时, 所有依赖于它的对象都得到通知并被自动更新。观察者模式又称“发布-订阅”模式角色: 抽象主题(Subject) 具体主题(ConcreteSubject)——发布者 抽象观察者(Observer) 具体观察者(ConcreteObs
阅读全文
摘要:意图:提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示 适用性: 访问一个聚合对象的内容而无需暴露它的内部表示。 支持对聚合对象的多种遍历。 为遍历不同的聚合结构提供一个统一的接口(即, 支持多态迭代)。 实现方法:__iter__、__next__ 1 class Ra
阅读全文
摘要:意图:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。角色: 抽象处理者(Handler) 具体处理者(ConcreteHandler) 客户端(Client)适用场景: 有多个对象可以处理一个请求,哪个
阅读全文
摘要:意图:为其他对象提供一种代理以控制对这个对象的访问。在需要用比较通用和复杂的对象指针代替简单的指针的时候,使用Proxy模式。角色: 抽象实体(Subject) 实体(RealSubject) 代理(Proxy)适用场景: 远程代理:为远程的对象提供代理。一个对象在不同的地址空间提供局部代表。 虚代
阅读全文
摘要:意图:将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。角色: 抽象组件(Component) 叶子组件(Leaf) 复合组件(Composite) 客户端(Client) 适用场景: 表示对象的“部分-整体”层次结构(特别是结构是递归的) 希
阅读全文
摘要:# 结构型设计模式:# 其主要用来处理一个系统中不同实体(比如类和对象)之间关系,关注的是提供一种简单的对象组合方式来创造新的功能。# 当我们希望把一个老组件用于一个新组系统或者把一个新组件应用于老系统中,同时在代码无法修改的,# 或者说无法访问这些代码时(在实际开发中,旧系统的代码修改后牵一而动全
阅读全文
摘要:建造者模式 意图:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 适用场景: 当创建复杂对象的算法(Director)应该独立于该对象的组成部分(Builder)以及它们的装配方式时 当构造过程允许被构造的对象有不同的表示时(不同Builder)。角色: 抽象建造者(Bu
阅读全文
摘要:简单工厂模式 创建对象放在了工厂类中,而不是再暴露在外边,通过工厂类实现所有操作。 内容:不直接向客户端暴露对象创建的实现细节,而是通过一个工厂类来负责返回创建产品类的实例。 角色: 工厂角色(Creator) 抽象产品角色(Product) 具体产品角色(Concrete Product)优点:
阅读全文
摘要:在大学时候,教授讲设计模式和算法大家都是在睡觉......并没有人觉得他们有用。 什么是设计模式 设计模式的四个基本要素 设计模式的分类 设计模式的六大原则 面向对象与设计模式 例子:
阅读全文

浙公网安备 33010602011771号