设计模式概况

简介: 设计模式概况

设计模式


设计模式(Design Patterns),旨在软件设计(可重用的面向对象软件的要素)中,被反复使用的一种代码设计经验。设计模式旨在简化代码量、降低耦合度、高效使用可重用代码,提高代码可拓性和可维护性。


3V3H概念:


3V: Voluem(海量),Variety(多样)、Velocity(实时)


3H: High concurrency(高并发)、High performance(高性能)、High development(高可拓)


设计模式的由来:


设计模式这个术语是由上个世纪90年代Erich Gamma、Richard Helm、Raplh Johnson和Jonhn Vlissides四人总结提炼而出。并编写了Design_Patterns(设计模式)一书,他们四位统称为GOF(俗称四人帮)。


设计模式:即 将常使用的设计思想提炼出一个个模式,然后给每个模式命名,这样在使用的时候更方便交流。GOF把23个常用模式分为创建型模式、结构型模式和行为型模式三类


为何采用设计模式思想?(请注意思想二词!!!)


设计模式并非直接用来完成编码,而是描述在各种不同情况下,要怎么解决问题的一种方案一种思想


面向对象设计模式常以对象来描述其中的关系和相互作用,但不涉用来完成应用程序的特定类别或对象。设计模式能使不稳定依赖于相对稳定、具体依赖于相对抽象,避免会引起麻烦的紧耦合,以增强软件设计面对并适应变化的能力。


学习设计模式,关键是学习设计思想,不为设计而设计,需合理平衡设计模式的复杂度和灵活性。


须知设计模式并不是万能的!!!

设计模式符合什么原则?


开闭原则(Open Colse Principle):


软件对拓展开发,对修改关闭。


理解:在增加新功能的时候,能不改代码就尽量不要改,如果只增加部分代码便可完成新功能,即是最好。


里氏替换原则(Liskov Substitution Principle):


面向对象设计原则(六大原则)


理解:若调用父类方法可成功,即调用成调用其子类亦可成功


面向对象六大设计原则:


英文名称 缩写 中文名称
Single Responsibility Principle SRP 单一职责原则
Open Close Principle OCP 开闭原则
Liskov Substitution Principle LSP 里氏替换原则
Law of Demeter ( Least Knowledge Principle) LoD 迪米特法则(最少知道原则)
Interface Segregation Principle ISP 接口分离原则
Dependency Inversion Principle DIP 依赖倒置原则


常用设计模式概况:


640 (1).jpg


创建型模式(Creational Patterns):


如何创建对象? 核心思想是要把对象的创建和使用分离,从而使得二者可以相对独立地变换。这些模式更加关注对象之间的创建


  • 单例模式:Singleton Pattern


  • 多例模式:Multiton Pattern


  • 工厂模式:Factory Pattern


  • 静态工厂模式:Static Factory Pattern


  • 抽象工厂模式:Abstract Factory Pattern


  • 原型模式:Prototype Pattern


  • 建造者模式:Builder Pattern


  • 对象池模式:Pool Pattern


结构型模式(Structural Patterns):


如何组合各种对象,以便于更好、更灵活的结构?面向对象的继承机制虽提供了基本的子类继承与拓展父类的功能,但结构型模式却不仅是简单的继承,还有更多的通过组合,使之与运行期的动态组合实现更加灵活的功能。这些模式更加关注对象之间的组合


  • 组合模式(Composite)


  • 桥接模式(Bridge)


  • 适配器模式(Adapter)


  • 过滤器模式(Filter、Criteria Pattern


  • 装饰模式(Decorator)


  • 外观模式(Facade)


  • 门面模式:Facade


  • 享元模式(Flyweight)


  • 代理模式(Proxy)


  • 数据映射模式:Data Mapper


  • 依赖注入模式:Dependency Injection


  • 流接口模式:Fluent Interface


  • 注册模式:Registry


行为模式(Behavioral Patterns):


行为模式主要涉及对象与函数(算法)之间的职责分配,通过对象及函数灵活组合。此种模式更加关注对象之间的通信


责任链模式: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


规格模式:Specification


640 (7).png



有不少的人说程序= 算法+ 数据结构,但个人认为程序 = 架构 + 设计模式 + 数据结构与算法


接下来将一起对本文中面向对象原则及设计模式进行详细的学习,同时我也会不断更新算法与数据结构相关的知识,让我们共同学习,一起进步吧

目录
相关文章
|
Java 设计模式 数据库
我的设计模式学习笔记------>Java设计模式总概况
设计模式(Design Pattern)的概念最早起源于建筑设计大师Alexander的《建筑的永恒方法》一书,尽管Alexander的著作是针对建筑领域的,但是他的观点实际上用用于所有的工程设计领域,其中也包括软件设计领域。
1498 0
|
16天前
|
设计模式 安全 Java
Kotlin教程笔记(51) - 改良设计模式 - 构建者模式
Kotlin教程笔记(51) - 改良设计模式 - 构建者模式
|
2月前
|
设计模式 数据库连接 PHP
PHP中的设计模式:提升代码的可维护性与扩展性在软件开发过程中,设计模式是开发者们经常用到的工具之一。它们提供了经过验证的解决方案,可以帮助我们解决常见的软件设计问题。本文将介绍PHP中常用的设计模式,以及如何利用这些模式来提高代码的可维护性和扩展性。我们将从基础的设计模式入手,逐步深入到更复杂的应用场景。通过实际案例分析,读者可以更好地理解如何在PHP开发中应用这些设计模式,从而写出更加高效、灵活和易于维护的代码。
本文探讨了PHP中常用的设计模式及其在实际项目中的应用。内容涵盖设计模式的基本概念、分类和具体使用场景,重点介绍了单例模式、工厂模式和观察者模式等常见模式。通过具体的代码示例,展示了如何在PHP项目中有效利用设计模式来提升代码的可维护性和扩展性。文章还讨论了设计模式的选择原则和注意事项,帮助开发者在不同情境下做出最佳决策。
|
19天前
|
设计模式 开发者 Python
Python编程中的设计模式:工厂方法模式###
本文深入浅出地探讨了Python编程中的一种重要设计模式——工厂方法模式。通过具体案例和代码示例,我们将了解工厂方法模式的定义、应用场景、实现步骤以及其优势与潜在缺点。无论你是Python新手还是有经验的开发者,都能从本文中获得关于如何在实际项目中有效应用工厂方法模式的启发。 ###
|
12天前
|
设计模式 安全 Java
Kotlin教程笔记(51) - 改良设计模式 - 构建者模式
Kotlin教程笔记(51) - 改良设计模式 - 构建者模式
31 1
|
1月前
|
设计模式 Java Kotlin
Kotlin教程笔记(51) - 改良设计模式 - 构建者模式
本教程详细讲解Kotlin语法,适合希望深入了解Kotlin的开发者。对于快速学习Kotlin语法,推荐查看“简洁”系列教程。本文重点介绍了构建者模式在Kotlin中的应用与改良,包括如何使用具名可选参数简化复杂对象的创建过程,以及如何在初始化代码块中对参数进行约束和校验。
21 3
|
2月前
|
设计模式 算法 安全
设计模式——模板模式
模板方法模式、钩子方法、Spring源码AbstractApplicationContext类用到的模板方法
设计模式——模板模式
|
2月前
|
设计模式 数据库连接 PHP
PHP中的设计模式:如何提高代码的可维护性与扩展性在软件开发领域,PHP 是一种广泛使用的服务器端脚本语言。随着项目规模的扩大和复杂性的增加,保持代码的可维护性和可扩展性变得越来越重要。本文将探讨 PHP 中的设计模式,并通过实例展示如何应用这些模式来提高代码质量。
设计模式是经过验证的解决软件设计问题的方法。它们不是具体的代码,而是一种编码和设计经验的总结。在PHP开发中,合理地使用设计模式可以显著提高代码的可维护性、复用性和扩展性。本文将介绍几种常见的设计模式,包括单例模式、工厂模式和观察者模式,并通过具体的例子展示如何在PHP项目中应用这些模式。
|
2月前
|
设计模式 Java Spring
spring源码设计模式分析-代理设计模式(二)
spring源码设计模式分析-代理设计模式(二)
|
1月前
|
设计模式 安全 Java
Kotlin教程笔记(51) - 改良设计模式 - 构建者模式
Kotlin教程笔记(51) - 改良设计模式 - 构建者模式
35 0