一句话解释设计模式

本文介绍了软件设计的六大基本原则,包括单一职责原则、里氏替换原则等,并概述了23种经典设计模式,如单例模式、工厂模式等,帮助读者理解如何有效地组织和设计代码。

设计模式一共由6大原则和23种设计模式,一下子很难将它们全部说出来,但是可以用一句话,将它们的特点的概括出来,然后在这个特点上进行展开,这样就容易多了。


六大原则

1.单一职责原则
无论是变量、方法还是类、接口等等,它们的职责或代表的含义负责的功能都应该是单一独立的,一个模块不能负责超过两种事情,一种事情也尽量不要在多个地方进行实现。

2.里氏替换原则
凡是父类、接口可以使用的地方,它们的子类、实现类都可以进行无缝替换。

3.依赖倒置原则
模块之间的依赖应该通过接口、父类发生,而不是具体的实现类发生。

4.接口隔离原则
客户端不应该依赖它不需要的接口,类与类之间的依赖应该建立在最小的接口上。

5.迪米特法则
一个对象应该对其他对象保持最少的了解。简单的来说,就是一个类对自己依赖的类知道的越少越好,对于被依赖的类,向外公开的方法越少越好。(但是不应该类的正常操作和功能)

6.开闭原则
软件实现应该对扩展开放,对修改关闭。其含义是说一个软件实体的应该通过扩展来实现变化,而不是通过修改已有的代码来实现变化。


23种设计模式

1.单例模式
通过私有化构造函数,从本来静态方法获取实例从而保证该系统种此类只有一个实例。

2.工厂模式
2.1 普通工厂模式
父类决定实例的生成方法,所要生成的具体的类全部交给子类负责。
(这样就可以将生成实例的框架和实际负责生成实例类的解耦)

2.2 简单工厂模式
在不需要多个工厂类的情况下,将工厂类方法变为静态方法。

2.3 抽象工厂模式
使用一个创建一系列相关或相互依赖的接口,而无需关心它们的具体的类。
(抽象工厂将抽象零件组装成抽象产品,而不是关心零件的具体实现)

3.模板方法模式
在父类种定义好处理流程的算法框架,在子类中实现具体处理。
(将共同的封装进父类中,具体的处理交给子类)

4.建造者模式
将负责对象的创建和组装的过程进行封装隔离,对于不同组装就会产生不同的产品。
(建造者模式比工厂模式多了一个指挥者的角色。在建造者模式中,指挥者决定了建造者角色中方法的调用,在模板方法模式中,父类决定子类的方法的调用顺序)

5.代理模式
为其他对象提供一个代理来控制对这个对象的访问。
(代理和真正的实体实现同一接口,具有一致性。只有在必要的时候,代理才会将实体实例化)

6.原型模式
用原型实例指定创建对象的种类,并通过clone这个原型来创建新的对象,而不是通过类名直接new 出一个实例。
(注意浅拷贝与深拷贝)

7.责任链模式
将多个处理请求的对象按照一定顺序连成一条链,并沿着该条链处理请求,直到有一个对象处理他。
(可以解除发送者和接收者之间的耦合,消除if-else的好方法)

8.装饰者模式
动态地给一个对象添加一些额外的功能。
(装饰者与被装饰者具有一致性,这样就可以不断为装饰者添加功能)

9.策略模式
定义一系列解决问题的算法,将他们分别封装起来,并且使它们之间可以相互替换。

10.适配器模式
将一个类的接口转换成调用者希望的另一个接口。
(将原本由于接口不兼容而不能在一起工作的那些类可以一起工作)

11.迭代器模式
提供一种方法访问容器的各个元素,而又不暴露对象的内部细节。

12.组合(合成)模式
将对象组合成树性结构以表示部分-整体的层次结构。
(组合模式的核心就是让容器和内容具有一致性)

13.观察者模式
定义对象间一种一对多的依赖关系,以便当一个对象的状态发生改变的时候,所有其他依赖它的对象都能得到通知并自动更新。
(原理是在被观察者中增加List-储存观察者,每次被观察者有什么变化时候,调用方法,统一调用List中观察者的被通知的方法)

14.外观模式
为子系统中的一组接口提供一个一致对外操作方法。
(外观模式定义了一个高层接口,使得这一子系统更加容易使用)

15.备忘录模式
在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到保存的状态。

16.访问者模式
设置 一个类访问数据结构中的元素,并把各元素的处理交给访问者类。
(在访问者模式中,数据结构于处理被分离开)

17.状态模式
以状态为类型,封装对象因为状态改变而引起的行为变化。
(核心用类表示状态)

18.享元模式
运用共享奇数有效的支持大量细粒度的对象。
(通过尽量共享实例来避免new出实例)

19.桥梁模式
将抽象部分和实现部分进行分离,使它们可以进行独立进行变化。
(将类的功能层级结构和实现层次结构进行分离,桥梁模式作用就是连接二者)

20.解释器模式
给定一个语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子。( 使用较少)

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值