设计模式简述

设计模式是众多软件开发人员经过长时间的实验和错误而总结的面对一般问题的解决方案,是经过分类总结可以重复使用的代码设计经验的总结。

在项目中合理地使用设计模式可以解决很多问题,每一种设计模式都有相应的原理与之对应,每一种模式都是描述我们代码开发过程中不断重复出现的问题以及问题的解决方案。

说道设计模式,GOF是我们无法绕过得话题,Design Patterns- Elements of Reusable Object-Oriented Software(设计模式-可复用的面向对象软件元素)这本书中首次提到了设计模式的概念,这本书的作者Erich Gamma、John Vlissides、 Richard Helm、 Ralph Johnson四位作者合称GOF(四人帮)。

根据书中所提及的设计模式一共分为三大类创建型模式、结构型模式、行为模式。

其中创建型模式包含:工厂模式、抽象工厂模式、单例模式、建造者模式、原型模式。

结构型模式包含:适配器模式、桥接模式、过滤器模式、组合模式、装饰器模式、外观模式、代理模式、享元模式。

行为模式包含:责任链模式、命令模式、解释器模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、空对象模式、策略模式、模板模式、访问者模式。

在下面的文章中我们会一一介绍这些模式。

设计模式六大原则

1、Open Closed Principle(开闭原则)

Software entities should be open for extension,but closed for modification。

软件实体如模块、类、函数应对扩展开放,对修改关闭。

这个简单看来就是说不要去修改原有功能代码,应该添加代码去扩展原有功能实现新的需求。

开闭原则可以通过‘抽象约束、封装变化’来实现,即通过接口或抽象类为软件实体定义一个抽象层,将相同的可变因素封装到对应的实现类。

使用开闭原则可以提高代码的可复用性、可维护性,降低软件测试的难度。

2、Liskov Substitution Principle(里氏替换原则)

Inheritance should ensure that any property proved about supertype objects also holds for subtype objects。

继承必须确保超类所拥有的性质在子类中仍然成立。

里氏替换原则主要阐述了有关继承的一些原则,是继承复用的基础,它反映了父类和子类的关系,是对开闭原则的补充,对实现抽象化的具体步骤的规范。

通俗来讲就是子类可以扩展父类的功能,但不能改变父类原有的功能。也就是说:子类继承父类时,除了添加新的方法外,尽量不要重写父类的方法。

3、Single Responsibility Principle(单一职责原则)

There should never be more than one reason for a class to change。

一个类只负责一项职责,能引起类的变化的只有一个原因。

单一职责原则降低类的复杂度,提高类的可读性、可维护性,降低变更引起的风险。

4、Interface Segregation Principle(接口隔离原则)

The dependency of one class to another one should depend on the smallest possible interface。

一个类对另一个类的依赖应该建立在最小的接口上。

要为各个类建立它们需要的专用接口,而不要试图去建立一个很庞大的接口供所有依赖它的类去调用。

5、Dependence Inversion Principle(依赖倒置原则)

High level modules shouldnot depend upon low level modules.Both should depend upon abstractions.Abstractions should not depend upon details. Details should depend upon abstractions。

高层模块不应该依赖低层模块,两者都应该依赖其抽象;抽象不应该依赖细节,细节应该依赖抽象。

依赖倒置原则是实现开闭原则的重要途径之一,降低了客户与实现模块之间的耦合,减少并行开发引起的风险,提高代码可读性和可维护性。

6、Demeter Principle(迪米特原则)

Talk only to your immediate friends and not to strangers。

如果两个软件实体无须直接通信,那么就不应当发生直接的相互调用,可以通过第三方转发该调用,降低类之间的耦合度,提高模块的相对独立性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜未央,流年殇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值