大话24种设计模式详解及实现过程详解

先来个抛砖引玉:大家在开发中经常碰到很多if()else{}条件的判断,其实这也算是一种设计模式--策略模式。当然,如果业务已经固定,后期不需要做任何修改的话,那么这种硬编码格式的确不会遇到任何问题。但是,如果一旦需要判断条件多了,那么你的代码可能会写N多的if else语句,而且还需要每次有需求变动的时候,都得去重新修改一次或者添加一次,这样的代码就让人头疼了。所以可以用一种枚举的方式,在判断中通过枚举遍历的方式来改善这种状况。这样的代码,让谁都喜欢。不然自己改动方便,后边看你代码的人也会感觉高大尚。所以说,设计模式对于开发者和架构者来说是一件非常重要的事情。下面,我就来说下自己对设计模式的理解,不会的可以学一学,理解比我深的可以发表你的看法,来纠正我的观点。

由于本篇和24种设计模式加起来内容有点多,所以需要抽出时间分开写,还望大家多多包涵,每写完一篇设计模式的理解和具体实现都会在对应的模式名称上附上链接。本篇主要介绍了设计模式的设计原则和分类。

设计模式的7个原则

1.开闭原则:对功能扩展开放,对修改关闭

就是说对功能扩展持开放态度,但是不允许对代码修改。说白了就是在不修改(对于sql来说就是不允许update)代码的情况下,通过添加别的地方的业务代码(对于sql来说就是insert)来扩展功能。最佳实现就是面向接口编程,这里可以参考工厂模式。

2.单一职责原则:一个类只实现一个功能

就是说创建了一个类只为一个或者说一种业务服务。其我认为这个不但是针对类,针对接口也适应,毕竟接口就是一个(特殊的)类。这样做的目的就是防止如果想要添加新的功能的话还需要对源代码进行修改(这也符合开闭原则,如果对原代码修改就破坏了开闭原则),而且如果一个类或者接口实现了很多功能的话,这个类或者接口就会让人感觉很乱,有一会东一会西的感觉。

3.依赖倒转原则:程序要依赖于抽象接口,不要依赖于具体实现。简单的说就是要求对抽象进行编程,不要对实现进行编程,这样就降低了客户与实现模块间的耦合。

说白了就是要面向接口开发,而不是面向具体的类开发。

4.接口隔离原则:将不同功能的接口定义在不同的接口中来实现接口的隔离。

比如说某个类的接口有增删改查4个功能。但是我现在有个业务场景:在3个业务模块中分别有3个角色需要用到这个类的一些功能,A角色只需要其中的查询功能,B角色需要所有的功能,C角色需要其中的查找和修改功能。那么我需要定义3个接口:InterfaceA、InterfaceB、InterfaceC这3个接口,分别只实现对应的功能,而不是创建一个InterfaceD,里面实现了全部的功能,如果这样做,那我就要在3个模块中去都去实现所有的功能,但是对于某些业务模块又不是必须有的,产生了代码冗余。画图来解释吧,看的更清晰。

这样做我只需要实现对应的接口,没用到的我就没必要去实现了。

这样做的话就在本来不需要的地方写了不需要的代码,造成了代码的冗余。

所以,总结一句话,接口隔离就是要求接口粒度最小化,减少接口之间相互依赖的时的冗余性和复杂性。

5.合成/聚合复用原则:新类包含现有类的话,尽量不使用继承。

虽然新类包含了旧类的字段,但是如果使用了继承,一旦旧类发生变化,但是新类不能变的话,就要对新类做出相应的修改。所以就是说如果不是父子关系,只是单纯的对现有类的扩展的话,复用的手段是合成/聚合复用,而不是通过继承的方式。

6.里式替换原则:父类能出现的地方,子类一定能够出现

就是说子类继承父类的话,子类不能重写父类的方法。

7.迪米特法则:尽量减少一个类对另一个类的依赖,保证这个类的独立性,以达到高内聚,低耦合。

设计模式的分类:按照功能和使用场景可以分为3种

创建型模式(5种):提供了多种优雅创建对象的方法

工厂模式(Factory Pattern)、抽象工厂模式(Abstract Factory Pattern)、单例模式(Singleton Pattern)、建造者模式(Builder Pattern)、原型模式(Prototype Pattern)

结构型模式(8种):通过类和接口之间继承和实现创建复杂结构的对象

适配器模式(Adapter Pattern)、桥接模式(Bridge Pattern)、过滤器模式(Filter、Criteria Pattern)、

组合模式(Composite Pattern)、装饰器模式(Decorator Pattern)、外观模式(Facade Pattern)、

享元模式(Flyweight Pattern)、代理模式(Proxy Pattern)

行为型模式(11种):通过类之间不同的通信方式实现不同的接口

责任链模式(Chain Of Responsibility Pattern)、命令模式(Command Pattern)、

解释器模式(Interpreter Pattern)、迭代器模式(Iterator Pattern)、中介者模式(Mediator Pattern)、

备忘录模式(Memento Pattern)、观察者模式(Observer Pattern)、状态模式(State Pattern)、

策略模式(Strategy Pattern)、模板模式(Tmplate Pattern)、访问者模式(Visitor Pattern)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值