12 2023 档案
摘要:动机 针对某个类,为了保证系统中只创建一个示例,并且易于被访问(例如操作系统的任务管理器,软件的登陆注册界面) 自行创建这个实例,无法从外部创建这个实例,向系统提供这个实例 饿汉式单例 Java版本 在类加载的时候,就创建对象,如果后续得不到使用,可能会造成内存资源浪费 懒汉式单例 Java版本 只
阅读全文
摘要:动机 对象的克隆问题,想要复制出本对象的一个副本,属性方法一模一样 从需求上来说,先快速克隆对象,后续根据需求再进行对象局部属性的修改 区分为深克隆和浅克隆两个版本,默认为浅克隆 角色 Prototype 抽象原型类 Concrete Prototype 具体原型类 Client 客户类 浅克隆与深
阅读全文
摘要:特点 建造者模式是一步一步构建一个复杂的对象,属于对象创建型模式 将一个复杂对象的构建与他的表示分离,使得同样的构建过程可以创建不同的表示 关注如何逐步地创建一个复杂的对象或产品,不同的创造者定义了不同的创建过程 用户不需要知道内部的具体构造细节、只用指定复杂对象的类型(建造者类型) 角色组成 Bu
阅读全文
摘要:特点 系统中除了有多种产品类型(产品等级结构,如果汁、方便面、矿泉水),还出现了多个品牌(产品族,或农夫山泉、娃哈哈、康师傅、统一等品牌几乎都有这些产品) 在工厂方法模式中,只有一个产品等级结构 一个抽象产品(父类)、多个具体产品(子类)形成一个产品等级结构 产品族是指由同一个工厂生产,位于不同产品
阅读全文
摘要:1. 原函数、装饰器 都 没有参数 代码: class Test: def __init__(self, func): print('Be in __init__ process...') self.__func = func def __call__(self): print("...Start
阅读全文
摘要:特点 工厂存在父类和子类,产品存在父类和子类。 工厂父类负责定义创建产品对象的公共接口,工厂子类负责生成具体的产品对象。 包含的角色 Product 抽象产品 ConcreteProduct 具体产品 Factory 抽象工厂 ConcreteFactory 具体工厂 模式分析 工厂方法模式是简单工
阅读全文
摘要:C++和Java中面向对象中有抽象类或接口的说法,在python中没有abstract或interface这样的内置关键字。但是abc模块(Abstract Base Classes)实现了这些抽象类检查的功能,其中ABC是抽象基类。@abstractmethod表示这个方法是一个抽象方法,子类必须
阅读全文
摘要:1. 单一职责原则(SRP,Single Responsibility Principle) 一个对象应该只包含单一的职责,并且该职责被完整地封装在一个类中。职责分离,提升模块的可复用性,SRP是实现高内聚、低耦合的指导方针。 2. 开闭原则(OCP,Open-Closed Principle) 软
阅读全文
摘要:工厂负责生产所有的产品,根据传入参数的不同,返回不同的产品对象。 包含的角色 工厂角色 Factory 静态方法 抽象产品角色 Product 声明公用的抽象方法和属性 具体产品角色 ConcreteProduct 覆盖抽象产品中声明的方法,多种产品多种覆盖 模式特点 可以降低系统耦合度,使用工厂方
阅读全文