设计模式总结 青旅半醒 2022-05-31 04:50 201阅读 0赞 # 设计模式 # * 什么是设计模式 * 什么时候使用设计模式 * 设计模式六大原则 * 常见设计模式 ## 什么是设计模式 ## 设计模式是软件开发人员在软件开发过程中面临一般问题使用的解决方案。设计模式是在软件开发过程中反复积累经验的总结。一般在Java中使用居多,也可称为面向对象设计模式。 ## 什么时候使用设计模式 ## 笔者认为任何时候都需要先考虑设计模式,因为设计模式可以达到易扩展,易维护,可重用,易理解等优点。但并非所有场合都使用,比如为一个简单的场合或者演示场景设计一个复杂的设计模式将毫无意义。 学习中看到网友一句话觉得很好:学习,然后全部忘记。熟练理解了设计模式,不用刻意的去设计也会用出最适宜的设计模式。 实际上有网友对Java的设计语言有一定偏见,认为好的语言不会产生那么多设计问题,由此产生如此多设计模式,认为需要语言进行原生实现。 笔者认为编程语言没有好坏,学习设计模式未必不是件好事,当编程语言为你封装了设计模式,而你并不清楚,不是也很悲哀。 ## 设计模式六大原则 ## * 开闭原则(Open Close Principle) 对扩展开放,修改关闭。实现热插拔 * 里氏替换(Liskov Substitution Principle) 里氏替换是面向对象设计原则之一。任何父类可以出现的地方,子类都可以出现 面向对象设计原则:单一职责,开放封闭,里氏替换,接口隔离,依赖倒置 * 依赖倒置(Dependence Inversion Principle) 是开闭原则的基础,依赖抽象而不依赖具体 * 接口隔离(Interface Segregation Principle) 使用多个隔离的接口,代替使用单个接口。降低类之间的依赖和耦合度 * 迪米特法则,又称最少知道原则(Demeter Principle) 一个实体尽量少于其他实体发生相互作用,达到模块之间相互独立 * 合成复用(Composite Reuse Principle) 尽量使用聚合/耦合,少用继承 ## 常见设计模式 ## * 创建型模式:对象如何来 * [工厂方法模式][Link 1](Factory):使用工厂方法产生实例 * [抽象工厂模式][Link 2](Abstractfactory):使用抽象工厂创建实例对象 * [单例模式][Link 3](Sington):当前实例中类只有一个对象 * [建造者模式][Link 4](Builder):创建一个复杂对象过程 * [原型模式][Link 5](Prototype):对象拷贝,深复制、浅复制 * 结构型模式:对象之间的关系 * [适配器模式][Link 6](Adapter Pattern):适配不兼容接口 * [桥接模式][Link 7](Bridge Pattern):抽象部分与实际部分分离 * [组合模式][Link 8](Composite Pattern):将对象组合成属性结构来表示部分与整体的层次结构 * [装饰器模式][Link 9](Decorator Pattern):动态的给一个对象添加一个额外的职责 * [外观模式][Link 10](Facade Pattern):为子系统的一组接口提供了一个一致的界面 * [享元模式][Link 11](Flyweight Pattern):运用共享技术有效的支持大量细粒度的对象 * [代理模式][Link 12](Proxy Pattern):增加中间层代理类与底层实现类实现共同接口,并创建底层实现类对象,以便向外界提供功能接口 * 行为型模式:对象做什么 * [责任链模式][Link 13](Chain of Responsibility Pattern):使多个对象都有机会处理请求,避免请求的发送者和接受者之间的耦合关系,将这个对象连成一条链 * [命令模式][Link 14](Command Pattern):将一个请求封装成一个对象,使用户对不同请求对客户进行参数化,对请求排队或记录请求日志,请求撤销操作 * [解释器模式][Link 15](Interpreter Pattern):给定一个语言,定义他的一个文法的一种表示,并定义一个解释器。 * [迭代器模式][Link 16](Iterator Pattern):提供一种方法顺序访问一个聚合对象中的元素,并且不暴露内部表示 * [中介者模式][Link 17](Mediator Pattern):用一个中介对象封装一系列对象的交互 * [备忘录模式][Link 18](Memento Pattern):在不破坏封装的情况下,捕获一个类的内部状态,并在外部保存。可以将对象恢复到原先的状态 * [观察者模式][Link 19](Observer Pattern):定义了一种一对多的依赖关系,让多个监听者对象同时监听同一个主题对象 * [状态模式][Link 20](State Pattern):一个对象内在状态改变是允许改变其行为 * [策略模式][Link 21](Strategy Pattern):策略模式是一种定义了一系列算法的方法,所有的算法都是完成相同的工作,只是实现方法不同,减少了各种算法类与使用方法之间的耦合 * [模板模式][Link 22](Template Pattern):定义一个操作算法骨架,而将一些步骤延迟到子类。 * [访问者模式][Link 23](Visitor Pattern):把数据结构和作用于结构上的操作解耦合,使得操作集合可相对自由地演化 [Link 1]: https://github.com/Xchunguang/Design-pattern/tree/master/src/main/java/com/mysoft/factorymethod [Link 2]: https://github.com/Xchunguang/Design-pattern/tree/master/src/main/java/com/mysoft/abstractfactory [Link 3]: https://github.com/Xchunguang/Design-pattern/tree/master/src/main/java/com/mysoft/singleton [Link 4]: https://github.com/Xchunguang/Design-pattern/tree/master/src/main/java/com/mysoft/builder [Link 5]: https://github.com/Xchunguang/Design-pattern/tree/master/src/main/java/com/mysoft/prototype [Link 6]: https://github.com/Xchunguang/Design-pattern/tree/master/src/main/java/com/mysoft/adapter [Link 7]: https://github.com/Xchunguang/Design-pattern/tree/master/src/main/java/com/mysoft/bridge [Link 8]: https://github.com/Xchunguang/Design-pattern/tree/master/src/main/java/com/mysoft/composite [Link 9]: https://github.com/Xchunguang/Design-pattern/tree/master/src/main/java/com/mysoft/decorater [Link 10]: https://github.com/Xchunguang/Design-pattern/tree/master/src/main/java/com/mysoft/facade [Link 11]: https://github.com/Xchunguang/Design-pattern/tree/master/src/main/java/com/mysoft/flyweight [Link 12]: https://github.com/Xchunguang/Design-pattern/tree/master/src/main/java/com/mysoft/proxy [Link 13]: https://github.com/Xchunguang/Design-pattern/tree/master/src/main/java/com/mysoft/chainofresponsibility [Link 14]: https://github.com/Xchunguang/Design-pattern/tree/master/src/main/java/com/mysoft/command [Link 15]: https://github.com/Xchunguang/Design-pattern/tree/master/src/main/java/com/mysoft/interpreter [Link 16]: https://github.com/Xchunguang/Design-pattern/tree/master/src/main/java/com/mysoft/iterator [Link 17]: https://github.com/Xchunguang/Design-pattern/tree/master/src/main/java/com/mysoft/mediator [Link 18]: https://github.com/Xchunguang/Design-pattern/tree/master/src/main/java/com/mysoft/memento [Link 19]: https://github.com/Xchunguang/Design-pattern/tree/master/src/main/java/com/mysoft/observer [Link 20]: https://github.com/Xchunguang/Design-pattern/tree/master/src/main/java/com/mysoft/state [Link 21]: https://github.com/Xchunguang/Design-pattern/tree/master/src/main/java/com/mysoft/strategy [Link 22]: https://github.com/Xchunguang/Design-pattern/tree/master/src/main/java/com/mysoft/template [Link 23]: https://github.com/Xchunguang/Design-pattern/tree/master/src/main/java/com/mysoft/visitor
相关 设计模式总结 设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接 超、凢脫俗/ 2022年09月23日 05:52/ 0 赞/ 34 阅读
相关 设计模式总结 1.简单工厂模式:由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现 2.策略模式:定义一系列的 旧城等待,/ 2022年08月27日 02:25/ 0 赞/ 190 阅读
相关 设计模式总结 2016-05-08 菜鸟教程 > 更详细的设计模式教程,请点击文末的“阅读原文”。 > > 设计模式教程:http://m.runoob.com/design-patt 不念不忘少年蓝@/ 2022年08月22日 04:58/ 0 赞/ 191 阅读
相关 设计模式总结 终于完完整整的把设计模式又看了一遍,这几天一直计划要写一篇总结,无奈总被这样或那样的事情打断…再消化一下,回头来把欠的债给还了。 设计模式的分类 总体来说设计模式分为三 £神魔★判官ぃ/ 2022年07月26日 01:45/ 0 赞/ 191 阅读
相关 设计模式总结 本文转自 ——[树上月][Link 1]http://www.cnblogs.com/chenssy/p/3357683.html 从七月份开始一直到九月底才看完设计模式 ゝ一世哀愁。/ 2022年07月15日 09:18/ 0 赞/ 221 阅读
相关 设计模式总结 设计模式 什么是设计模式 什么时候使用设计模式 设计模式六大原则 常见设计模式 什么是设计模式 设计模式是软件开发人员在软件开发过程中面临 青旅半醒/ 2022年05月31日 04:50/ 0 赞/ 202 阅读
相关 设计模式总结 建造型模式: 简单工厂:常用,通过enum查找对象,调用其方法使用; 抽象工厂:未曾使用,多个工厂被封装在抽象工厂,挺复杂的; 单例:管理常用 建造者:需要生成的对象具 Dear 丶/ 2022年05月26日 03:19/ 0 赞/ 241 阅读
相关 设计模式总结 从七月份开始一直到九月底才看完设计模式,在这个过程中我不敢说我已经掌握了那本书里面的内容,或者说1/5,没能力说也没有资格说。但是结果不重要,重要的是这个过程我的收获!主要包括 末蓝、/ 2022年04月14日 06:15/ 0 赞/ 236 阅读
相关 设计模式总结 从18年10月份开始学习设计模式,到19年1月底才看完,这篇博文主要总结这个过程中我的收获和一些思考。 我的收获 从刚开始接触Java就听说过设计模式,但是由于自己的 朱雀/ 2022年03月22日 12:46/ 0 赞/ 285 阅读
相关 设计模式总结 首先,可以先参考 文档: https://design-patterns.readthedocs.io/zh\_CN/latest/index.html 创建型: 川长思鸟来/ 2021年12月22日 20:55/ 0 赞/ 272 阅读
还没有评论,来说两句吧...