{"id":18309402,"url":"https://github.com/masterjoyhunan/desiginpattren","last_synced_at":"2025-04-09T11:32:22.944Z","repository":{"id":81016614,"uuid":"138325543","full_name":"MasterJoyHunan/DesiginPattren","owner":"MasterJoyHunan","description":"面向对象设计模式","archived":false,"fork":false,"pushed_at":"2019-09-25T08:27:16.000Z","size":241,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-15T05:30:26.082Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Java","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/MasterJoyHunan.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}},"created_at":"2018-06-22T16:36:17.000Z","updated_at":"2020-04-23T02:54:30.000Z","dependencies_parsed_at":"2023-05-13T03:00:36.934Z","dependency_job_id":null,"html_url":"https://github.com/MasterJoyHunan/DesiginPattren","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MasterJoyHunan%2FDesiginPattren","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MasterJoyHunan%2FDesiginPattren/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MasterJoyHunan%2FDesiginPattren/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MasterJoyHunan%2FDesiginPattren/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MasterJoyHunan","download_url":"https://codeload.github.com/MasterJoyHunan/DesiginPattren/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248031711,"owners_count":21036456,"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","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":"2024-11-05T16:11:19.524Z","updated_at":"2025-04-09T11:32:22.913Z","avatar_url":"https://github.com/MasterJoyHunan.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 面向对象编程基本的原则\n\n+ 单一职责：一个类只要做好一件事\n+ 开放封闭：一个类,应该是可扩展的，而不可修改\n+ 依赖倒置：一个类，不应该强依赖另一个类，每个类对另一个类都是可替换的（面向接口编程）\n+ 里氏替换：子类继承父类，不应该替换父类的方法\n+ 迪米特法则：在类的结构设计上，每一个类都尽量降低成员的访问权限。强化类之间的松耦合\n+ 合成/聚合复用：尽量使用合成/聚合，尽量不要使用类继承\n+ 配置化: 尽可能使用配置， 而不硬编码\n\n\n# 创建模式\n+ [简单工厂模式](https://github.com/MasterJoyHunan/DesiginPattren/tree/master/src/simple_factory)\n\u003e 根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例，被创建的实例通常都具有共同的父类。\n+ [工厂方法模式](https://github.com/MasterJoyHunan/DesiginPattren/tree/master/src/factory_method)\n\u003e 定义一个创建对象的接口，让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类     \n+ [抽象工厂模式](https://github.com/MasterJoyHunan/DesiginPattren/tree/master/src/abstract_factory)\n\u003e 提供一个创建一系列相关或相互依赖对象的接口，而无需指定他们具体的类\n+ [建造者模式](https://github.com/MasterJoyHunan/DesiginPattren/tree/master/src/builder)\n\u003e 将一个复杂对象的构建与他的表示分离，使得同样的构建过程可以创建不同的表示\n+ [单例模式](https://github.com/MasterJoyHunan/DesiginPattren/tree/master/src/singleton)\n\u003e 保证一个类仅有一个实例，并提供一个访问它全局访问点\n+ [原型模式](https://github.com/MasterJoyHunan/DesiginPattren/tree/master/src/prototype)\n\u003e 用原型实例自定义创建对象的种类，并且通过拷贝这些原型创建新的对象\n# 结构型模式\n+ [适配器模式](https://github.com/MasterJoyHunan/DesiginPattren/tree/master/src/adapter)\n\u003e 将一个类的接口转换成客户希望的另外一个接口，使得原本不兼容而不能一起工作的那些类可以一起工作\n+ [装饰模式](https://github.com/MasterJoyHunan/DesiginPattren/tree/master/src/decorator)\n\u003e 动态的给一个对象添加一些额外的职责，就增加功能来说，比生成子类更为灵活\n+ [桥接模式](https://github.com/MasterJoyHunan/DesiginPattren/tree/master/src/bridge)\n\u003e 将抽象部分与它的实现部分分离，使它们可以独立的变化\n+ [组合模式](https://github.com/MasterJoyHunan/DesiginPattren/tree/master/src/composite)\n\u003e 将对象组合成树形结构以表示‘部分’-‘整体’的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性\n+ [享元模式](https://github.com/MasterJoyHunan/DesiginPattren/tree/master/src/flyweight)\n\u003e 运用共享技术有效的支持大量细粒度的对象\n+ [代理模式](https://github.com/MasterJoyHunan/DesiginPattren/tree/master/src/proxy)\n\u003e 为其他对象提供一种代理已控制对这个对象的访问\n+ [外观模式](https://github.com/MasterJoyHunan/DesiginPattren/tree/master/src/facade)\n\u003e 为子系统提供一致的界面，此模式定义了一个高层接口，这个接口使得这一子系统更加容易使用\n# 行为型模式\n+ [观察者模式](https://github.com/MasterJoyHunan/DesiginPattren/tree/master/src/observer)\n\u003e 定义了一种一对多的依赖关系，让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时，会通知所有的观察者对象，使他们能够自动更新自己\n+ [模板方法模式](https://github.com/MasterJoyHunan/DesiginPattren/tree/master/src/template_method)\n\u003e 定义一个操作中算法的骨架，而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤\n+ [命令模式](https://github.com/MasterJoyHunan/DesiginPattren/tree/master/src/command)\n\u003e 将一个请求封装为一个对象，从而使你可以用不同的请求对客户进行参数化，对请求排队或记录请求日志，以及可撤销操作\n+ [状态模式](https://github.com/MasterJoyHunan/DesiginPattren/tree/master/src/state)\n\u003e 当一个对象的内在状态改变时允许改变其行为，这个对象看起来像改变了其类\n+ [责任链模式](https://github.com/MasterJoyHunan/DesiginPattren/tree/master/src/chain_of_responsibility)\n\u003e 使多个对象都有机会处理请求，从而避免请求发送者和接收者之间的耦合关系，将这个对象连成一条链，并沿着这条链传递该请求，直到有一个对象处理它为止\n+ [解释器模式](https://github.com/MasterJoyHunan/DesiginPattren/tree/master/src/interpreter)\n\u003e 给定一个语言，定义它的文法的一种表示，并定义一个解释器，这个解释器使用该表示来解释语言中的句子\n+ [中介者模式](https://github.com/MasterJoyHunan/DesiginPattren/tree/master/src/mediator)\n\u003e 用一个中介对象来封装一系列的对象交互，中介者使各对象不需要显式的相互引用，从而使其耦合松散，而且可以独立的改变他们之间的交互\n+ [访问者模式](https://github.com/MasterJoyHunan/DesiginPattren/tree/master/src/vositor)\n\u003e 表示一个作用于某个对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作\n+ [策略模式](https://github.com/MasterJoyHunan/DesiginPattren/tree/master/src/strategy)\n\u003e 定义了算法家族，分别封装起来，让他们之间可以互相替换，此模式让算法的变化，不会影响到使用算法的客户\n+ [备忘录模式](https://github.com/MasterJoyHunan/DesiginPattren/tree/master/src/facade)\n\u003e 不破坏封装性的前提下，捕获一个对象的内部状态，并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原先状态\n+ [迭代器模式](https://github.com/MasterJoyHunan/DesiginPattren/tree/master/src/memento)\n\u003e 提供一种方法顺序访问一个聚合对象中各个元素，而不暴露改对象的内部表示","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmasterjoyhunan%2Fdesiginpattren","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmasterjoyhunan%2Fdesiginpattren","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmasterjoyhunan%2Fdesiginpattren/lists"}