# myProject **Repository Path**: ios3/my-project ## Basic Information - **Project Name**: myProject - **Description**: 项目学习汇总 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-10-17 - **Last Updated**: 2024-12-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 一、设计模式 设计模式分为三种类型,共23种 1.创建型模式:单例模式、抽象工厂模式、原型模式、建造者模式、工厂模式。 2.结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。 3.行为型模式:模版方法模式、命令模式、访问者模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式(Interpreter模式)、状态模式、策略模式、职责链模式(责任链模式)。 装饰着模式 装饰者模式允许你在不改变对象自身结构的情况下,动态地给一个对象添加功能,它是继承的一种替代方案。 在装饰者模式中,通常会有一个抽象组件(Component)和多个具体组件(Concrete Component)以及一个抽象装饰者(Decorator)和多个具体装饰者(Concrete Decorator)。 装饰者模式的一般结构: Component(抽象组件):定义了一个对象接口,可以在接口中定义一些基本的操作,具体组件将实现这个接口。 Concrete Component(具体组件):实现了抽象组件接口,是被装饰的对象。 Decorator(抽象装饰者):也实现了抽象组件接口,内部持有一个指向抽象组件的引用,并可以通过构造函数或者其他方式来接收一个具体组件的引用。 Concrete Decorator(具体装饰者):扩展了抽象装饰者,可以在装饰者中添加额外的功能。 组合模式 组合模式允许将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式对单个对象(叶节点)和组合对象(容器节点)使用相同的接口,使得客户端无需区分单个对象和组合对象,从而统一对待。 组合模式的一般结构: Component(抽象组件):定义了对象的通用接口,可以在其中包含子对象的操作方法,例如添加、删除、获取子对象等。 Leaf(叶节点):表示叶子节点对象,它实现了抽象组件接口。叶节点没有子节点。 Composite(容器节点):表示容器节点对象,它实现了抽象组件接口。容器节点可以包含其他组件作为子节点。 外观模式 外观模式提供了一个简化的接口,用于与复杂子系统或一组接口进行交互。 该模式的主要目的是隐藏底层系统的复杂性,使客户端可以更容易地与系统进行交互,而不需要了解系统内部的复杂性。 外观模式通常包括以下几个要素: Facade(外观):这是外观模式的核心部分,它提供了一个简单的接口,将客户端请求委派给底层系统的各个组件。外观可以看作是一个封装了系统复杂性的门面,为客户端提供了一个清晰的入口点。 Subsystems(子系统):这些是构成整个系统的各个部分或组件,它们完成实际的工作。外观模式的目标是将这些子系统的复杂性隐藏起来,使客户端无需了解每个子系统的详细实现。 享元模式 享元模式旨在有效地处理大量具有相似属性的对象,从而减少内存占用和提高性能。它通过共享相似对象的部分状态来减少对象的数量。这个模式通常用于需要创建大量相似对象的情况,以降低内存消耗和提高系统性能。 享元模式的关键思想是将对象的状态分为内部状态(Intrinsic State)和外部状态(Extrinsic State): 内部状态:内部状态是对象可以共享的状态,它通常是不变的,独立于对象的上下文。在享元模式中,内部状态存储在享元对象内部,可以被多个对象共享。 外部状态:外部状态是对象的上下文相关状态,它不能被共享,而必须在每个对象中单独存储。外部状态通常会影响对象的行为。 享元模式的一些关键角色: 享元工厂(Flyweight Factory):负责创建和管理享元对象。它通常维护一个享元对象的池子,以便在需要时共享已创建的享元对象。 享元对象(Flyweight):包含内部状态,可以被多个具体对象共享。享元对象不包含外部状态,外部状态需要在使用时通过参数传递给享元对象。 具体享元对象(Concrete Flyweight):实现享元对象接口,包含内部状态,并且需要在运行时接受外部状态的传递。 客户端(Client):维护外部状态,通过享元工厂获取享元对象,并将外部状态传递给享元对象。 模板方法模式 模板方法模式是一种行为设计模式,它定义了一个算法的骨架,将一些步骤延迟到子类中实现。这样可以在不改变算法结构的情况下,允许子类重新定义某些步骤的具体实现。 模板方法模式通常包含以下角色: 抽象模板类(Abstract Template):抽象模板类定义了一个算法的骨架,通常包括一个模板方法(Template Method),该方法定义了算法的结构,包括一系列步骤。这些步骤可以包括抽象方法、具体方法和钩子方法。抽象方法由子类实现,而具体方法可以在抽象模板类中提供默认实现。钩子方法是可选的,允许子类在算法的某些点进行挂钩(hook)操作,但不是必须的。 具体子类(Concrete Subclasses):具体子类继承自抽象模板类,并实现抽象方法以提供算法的具体实现。具体子类可以根据需要重写钩子方法,但通常不改变算法的整体结构。 二、MongoDB 1.安装和使用 拉取镜像:docker pull mongo:4.2.6 创建容器:docker run -itd --name mongo -p 27017:27017 mongo:4.2.6 --auth 三、