{"id":31553275,"url":"https://github.com/code-wgl/designpatternsdemo","last_synced_at":"2026-02-14T12:36:46.068Z","repository":{"id":179702243,"uuid":"197526924","full_name":"code-wgl/DesignPatternsDemo","owner":"code-wgl","description":"23种设计模式的DEMO分享（持续更新）","archived":false,"fork":false,"pushed_at":"2019-08-06T13:37:26.000Z","size":80,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-06-27T00:48:05.881Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/code-wgl.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2019-07-18T06:36:31.000Z","updated_at":"2019-08-06T13:37:27.000Z","dependencies_parsed_at":null,"dependency_job_id":"12ea5db3-5c19-4326-b0ca-45227ca454e3","html_url":"https://github.com/code-wgl/DesignPatternsDemo","commit_stats":null,"previous_names":["developer-wgl/designpatternsdemo","code-wgl/designpatternsdemo"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/code-wgl/DesignPatternsDemo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/code-wgl%2FDesignPatternsDemo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/code-wgl%2FDesignPatternsDemo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/code-wgl%2FDesignPatternsDemo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/code-wgl%2FDesignPatternsDemo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/code-wgl","download_url":"https://codeload.github.com/code-wgl/DesignPatternsDemo/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/code-wgl%2FDesignPatternsDemo/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278366702,"owners_count":25975102,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-04T02:00:05.491Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-10-04T20:16:59.320Z","updated_at":"2025-10-04T20:17:03.854Z","avatar_url":"https://github.com/code-wgl.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# 设计模式（DesignPatternsDemo）\n23种设计模式的DEMO分享（持续更新）\n\n### 开发及编辑工具：\nVisual Studio Code (官网：https://code.visualstudio.com/)\n\n\n\n\u003cbr\u003e\n\n## 什么是设计模式？\n\n通俗来讲，设计模式就是针对某一种特殊场景而给出的标准解决方案，它是前辈们的经验性总结，也是实现软件工程化的基础，良好的设计模式应用 可以是我们的软件变得更加健壮可维护。但是如果场景并不是符合规范，需要同学们依赖设计模式6大原则给出合理的解决办法。\n\n**可以将23种设计模式按照类型划分为三大类，如下：**\n\n创建型设计模式：如同它的名字那样，它是用来解耦对象的实例化过程。    \n结构型设计模式：将类和对象按照一定规则组合成一个更加强大的结构体。  \n行为型设计模式：定义类和对象的交互行为。    \n\n**设计模式6大原则：**\n1. 单一职责\n2. 开闭原则（对扩展开放，对修改封闭。例如：抽象基类的使用）\n3. 接口隔离（接口尽可能细、隔离）\n4. 依赖倒置或依赖反转（模块间的依赖通过抽象来发生，实现类之间不发生直接的依赖关系，而依赖关系通过接口或抽象产生）\n5. 里氏替换原则（依赖抽象与接口）\n6. 迪米特原则（解耦）\n\n\u003cbr\u003e\n\u003cbr\u003e\n\n***本文分享方式主要由目录入口进入各个模块，针对于各个模块进行详细的讲解。各模块主要针对以下几个模块进行解读：***\n- 定义与特点\n- 应用场景\n- 结构(UML类图)与说明\n- (模式中如果有多种实现模式,各种实现优缺点)\n- 可能会遇到的坑\n\n\u003cbr\u003e\n\n# 23种设计模式目录\n- 创建型设计模式\n    - [单例模式 - Singleton Pattern](./SingletonPattern/)\u0026nbsp;\u0026nbsp;(某个类只有一个实例，提供一个全局访问点)\n    - [建造者模式 - Builder Pattern](./BuilderPattern/)\u0026nbsp;\u0026nbsp;(封装一个复杂对象的构建过程,按照步骤构造对象)\n    - 原型模式 - Prototype Pattern\u0026nbsp;\u0026nbsp;(通过复制现有的实例来构建新的实例)\n    - 简单工厂模式 - Simple Factory Pattern\u0026nbsp;\u0026nbsp;(一个工厂类根据传入的参数决定创建哪一种产品类的实例)\n    - 工厂模式- Factory Method Pattern\u0026nbsp;\u0026nbsp; (定义一个创建对象的接口，让子类决定实例化哪个类)\n    - 抽象工厂模式 - Abstract Factory Pattern\u0026nbsp;\u0026nbsp;(创建相关依赖对象的家族，而无需指定具体类。)  \n\n- 结构型设计模式\n    - 适配器模式 - Adapter Pattern\u0026nbsp;\u0026nbsp;(将一个类的方法或者接口转换成客户希望的另一个接口)\n    - 组合模式 - Composite Pattern\u0026nbsp;\u0026nbsp;(将对象组合成树形结构以表示整体和部分的层次结构)\n    - 装饰模式 - Decorator Pattern \u0026nbsp;\u0026nbsp;(动态的给对象添加新的功能) \n    - 门面模式/外观模式 - Facade Pattern\u0026nbsp;\u0026nbsp;(对外提供一个统-的方法，用来访问子系统中的一群接口)\n    - 桥梁模式/桥接模式 - Bridge Pattern\u0026nbsp;\u0026nbsp;(将抽象部分和它的实现部分相互分离，是它们都可以独立变化)\n    - 享元模式 - Flyweight Pattern\u0026nbsp;\u0026nbsp;(通过共享技术来有效的支持大量细粒度的对象)\n    - 代理模式 - Proxy pattern\u0026nbsp;\u0026nbsp;(为其他对象提供一个代理以控制这个对象的访问)    \n\n- 行为型设计模式\n    - 模板模式 - Template Method Pattern\u0026nbsp;\u0026nbsp;(定义一个算法结构，而将-些步骤延迟到子类实现)\n    - 解释器模式 - Interpreter Pattern\u0026nbsp;\u0026nbsp;(给定一个语音，定义它的文法的一种表示，并定义一个解释器)\n    - 策略模式 - Strategy Pattern\u0026nbsp;\u0026nbsp;(定义一系列算法，把他们封装起来，并且使他们可以互相替换)\n    - 状态模式 - State Pattern\u0026nbsp;\u0026nbsp;(允许一个对象在其内部对象状态改变时改变它的行为)\n    - 观察者模式 - Observer Pattern\u0026nbsp;\u0026nbsp;(对象间一对多 的依赖关系)\n    - 备忘录模式- Memento Pattern\u0026nbsp;\u0026nbsp;(在不破坏封装的前提下，保持对象的内部状态)\n    - 中介者模式 - Mediator Pattern\u0026nbsp;\u0026nbsp;(用一个中介对象来封装一系列对象的交互)\n    - 命令模式 - Command Pattern\u0026nbsp;\u0026nbsp;(将命令请求封装称为一个对象，可以将不同的请求来进行参数化)\n    - 访问者模式 - Visitor Pattern\u0026nbsp;\u0026nbsp;(在不改变数据结构的前提下，增加作用于-组对象元素的新功能 \n    - 责任链模式 - Chain of Responsibility Pattern\u0026nbsp;\u0026nbsp;(将请求的发送者和接受者解耦， 使得多个对象都有处理这个请求的机会)\n    - 迭代器模式 - Iterator Pattern\u0026nbsp;\u0026nbsp;(一种遍历访问聚合对象各个元素的方法，不暴露给对象的内部结构)\n\n\u003cbr\u003e\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcode-wgl%2Fdesignpatternsdemo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcode-wgl%2Fdesignpatternsdemo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcode-wgl%2Fdesignpatternsdemo/lists"}