# Java设计模式 **Repository Path**: yangsiyuan/Design-Pattern ## Basic Information - **Project Name**: Java设计模式 - **Description**: 本仓库提供Java23种设计模式的相关实践及释义: 设计模式,即Design Patterns,是指在软件设计中,被反复使用的一种代码设计经验。使用设计模式的目的是为了可重用代码,提高代码的可扩展性和可维护性。 设计模式这个术语是上个世纪90年代由Erich Gamma、Richard Helm、Raplh Johnson和Jonhn Vlissides四个人总结提炼出来的,并且写了一本Design Patterns的书 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 2 - **Created**: 2021-02-26 - **Last Updated**: 2021-05-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Java设计模式 ## 介绍 **本仓库提供Java23种设计模式的相关实践及释义**: > - 设计模式,即Design Patterns,是指在软件设计中,被反复使用的一种代码设计经验。使用设计模式的目的是为了可重用代码,提高代码的可扩展性和可维护性。 > - 设计模式这个术语是上个世纪90年代由`Erich Gamma`、`Richard Helm`、`Raplh Johnson`和`Jonhn Vlissides`四个人总结提炼出来的,并且写了一本Design Patterns的书 ## 一. 设计模式的7大原则 > 设计模式主要是基于OOP编程提炼的,它基于以下7个原则 | 设计原则 | 一句话归纳 | 目的 | | ------------ | ------------------------------------------------------------ | -------------------------------------------------- | | 开闭原则 | 对扩展开放,对修改关闭 | 降低维护带来的新风险 | | 依赖倒置原则 | 高层不应该依赖低层,要面向接口编程 | | | 单一职责原则 | 一个类只干一件事,实现类要单一 | 更利于代码结构的升级扩展便于理解,提高代码的可读性 | | 接口隔离原则 | 一个接口只干一件事,接口要精简单一 | 功能解耦,高聚合、低耦合 | | 迪米特法则 | 不该知道的不要知道,一个类应该保持对其它对象最少的了解,降低耦合度 | 只和朋友交流,不和陌生人说话,减少代码臃肿 | | 里氏替换原则 | 不要破坏继承体系,子类重写方法功能发生改变,不应该影响父类方法的含义 | 防止继承泛滥 | | 合成复用原则 | 尽量使用组合或者聚合关系实现代码复用,少使用继承 | 降低代码耦合 | ## 二. 23种设计模式 ![image-20210226100655369](https://i.loli.net/2021/02/26/rfy9CXiWjzg6qlp.png) ### 2.1 创建型模式 > 这些设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用 new 运算符直接实例化对象。这使得程序在判断针对某个给定实例需要创建哪些对象时更加灵活 - [ ] 工厂模式(Factory Pattern) - [ ] 抽象工厂模式(Abstract Factory Pattern) - [ ] 单例模式(Singleton Pattern) - [ ] 生成器模式(Builder Pattern) - [ ] 原型模式(Prototype Pattern) ### 2.2 结构型模式 > 这些设计模式关注类和对象的组合。继承的概念被用来组合接口和定义组合对象获得新功能的方式。 - [ ] 适配器模式(Adapter Pattern) - [ ] 桥接模式(Bridge Pattern) - [ ] ~~过滤器模式(Filter、Criteria Pattern)~~ - [ ] 组合模式(Composite Pattern) - [x] 装饰器模式(Decorator Pattern) - [ ] 外观模式(Facade Pattern) - [ ] 享元模式(Flyweight Pattern) - [x] 代理模式(Proxy Pattern) ### 2.3 行为型模式 > 这些设计模式特别关注对象之间的通信 - [ ] 责任链模式(Chain of Responsibility Pattern) - [ ] 命令模式(Command Pattern) - [ ] 解释器模式(Interpreter Pattern) - [ ] 迭代器模式(Iterator Pattern) - [ ] 中介者模式(Mediator Pattern) - [ ] 备忘录模式(Memento Pattern) - [ ] 观察者模式(Observer Pattern) - [ ] 状态模式(State Pattern) - [ ] ~~空对象模式(Null Object Pattern)~~ - [ ] 策略模式(Strategy Pattern) - [ ] 模板模式(Template Pattern) - [ ] 访问者模式(Visitor Pattern) ### 2.4 附加:J2EE 模式 > 这些设计模式特别关注表示层。这些模式是由 Sun Java Center 鉴定的 - [ ] MVC 模式(MVC Pattern) - [ ] 业务代表模式(Business Delegate Pattern) - [ ] 组合实体模式(Composite Entity Pattern) - [ ] 数据访问对象模式(Data Access Object Pattern) - [ ] 前端控制器模式(Front Controller Pattern) - [ ] 拦截过滤器模式(Intercepting Filter Pattern) - [ ] 服务定位器模式(Service Locator Pattern) - [ ] 传输对象模式(Transfer Object Pattern)