hrenxiang / design-pattern-demo

23种设计模式

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

huangrx-design-pattern

23种设计模式

一、前言

设计模式是软件设计中常见问题的典型解决方案。 它们就像能根据需求进行调整的预制蓝图, 可用于解决代码中反复出现的设计问题。

人们常常会混淆模式和算法, 因为两者在概念上都是已知特定问题的典型解决方案。 但算法总是明确定义达成特定目标所需的一系列步骤, 而模式则是对解决方案的更高层次描述。 同一模式在两个不同程序中的实现代码可能会不一样。

算法更像是菜谱: 提供达成目标的明确步骤。 而模式更像是蓝图: 你可以看到最终的结果和模式的功能, 但需要自己确定实现步骤。

程序设计中,我们应该做到在结构设计上松耦合易读易扩展,在领域实现上高内聚不对外暴漏实现细节不被外部干扰。

而这就有点像家里三居(MVC)室、四居(DDD)室的装修,你不会允许几十万的房子把走线水管裸漏在外面,也不会允许把马桶放到厨房,炉灶安装到卫生间。

二、设计模式分类

设计模式总共有 23 种,总体来说可以分为三大类:

创建型模式( Creational Patterns ): 提供创建对象的机制, 增加已有代码的灵活性和可复用性。

结构型模式( Structural Patterns ) : 介绍如何将对象和类组装成较大的结构, 并同时保持结构的灵活和高效。

行为型模式( Behavioral Patterns ): 负责对象间的高效沟通和职责委派。

分类 包含 关注点
构建型模式 工厂模式、抽象工厂模式、单例模式、建造者模式、原型模式 关注于对象的创建,同时隐藏创建逻辑
结构型模式 适配器模式、过滤器模式、装饰模式、享元模式、代理模式、外观模式、组合模式、桥接模式 关注类和对象之间的组合
行为型模式 责任链模式、命令模式、中介者模式、观察者模式、状态模式、策略模式、模板模式、空对象模式、备忘录模式、迭代器模式、解释器模式、访问者模式 关注对象之间的通信

三、六大设计原则

无论何种设计模式,都是基于六大设计原则:

开闭原则:一个软件实体如类、模块和函数应该对修改封闭,对扩展开放。

单一职责原则:一个类只做一件事,一个类应该只有一个引起它修改的原因。

里氏替换原则:子类应该可以完全替换父类。也就是说在使用继承时,只扩展新功能,而不要破坏父类原有的功能。

依赖倒置原则:细节应该依赖于抽象,抽象不应依赖于细节。把抽象层放在程序设计的高层,并保持稳定,程序的细节变化由低层的实现层来完成。

迪米特法则:又名“最少知道原则”,一个类不应知道自己操作的类的细节,换言之,只和朋友谈话,不和朋友的朋友谈话。

接口隔离原则:客户端不应依赖它不需要的接口。如果一个接口在实现时,部分方法由于冗余被客户端空实现,则应该将接口拆分,让实现类只需依赖自己需要的接口方法。

About

23种设计模式


Languages

Language:Java 100.0%