软件开发中有哪些设计模式

小编 1688

软件开发中有以下设计模式:1.工厂设计模式;2.适配器设计模式;3.观察者设计模式;4.装饰器设计模式;5.策略设计模式;6.抽象工厂设计模式;7.代理设计模式;8.迭代器设计模式;9.备忘录设计模式;10.访问者设计模式。工厂设计模式是最为基础的设计模式,其扩展性很高。

1.工厂设计模式

工厂设计模式是一个最基础的设计模式,也是最常用的设计模式,其概念是:定义一个工厂类,根据传入的参数不同返回不同类的实例,被创建的类都具有相同的父类。该设计模式实现了对象的创建和使用的分离,无需知道对应的类名只需要知道具体产品类所对应的参数,提高了系统的灵活性。

2.适配器设计模式

适配器设计模式能够兼容不同接口,使其能协同工作。可以实现在不修改代码或者修改很少的代码情况下,进行数据库的无缝切换。首先,定义好适配器接口;然后,让各种数据库实现定义好的接口,我们在代码中使用接口中定义的方法,这样当我们想要切换数据库的时候,只要将该数据库实现对应接口的方法,就可以完成数据库的适配,就可以无缝连接。

3.观察者设计模式

观察者模式又被称为“通知模式”或“发布订阅模式”,是一种一对多的模式。在软件开发中,比如我们的产品有这样一个功能,用户下单支付成功之后,就会发送一条短信通知用户,如果之后希望不仅发送短信,还需要发送邮件,还需要语音通知,在这样的情况下,就可以采用观察者模式。我们将支付成功信息放入到消息队列中,至于发短信还是发邮件,由各个业务模块订阅消息队列自己处理。这样在订单模块里面,就不需要一个个通知短信模块,邮件模块了。

4.装饰器设计模式

装饰器设计模式就是通过装饰一个对象而不改变对象来让这个对象更强大。举一个软件开发中的案例,比如我们已经设计好一个短信发送功能,并且经过测试和线上测试这个功能是没有任何问题的,但是现在有一个新的需求,要求发送短信的时候,还能语音提醒,我们如何能够在不影响原有的功能情况下,实现这个功能呢,这个时候我们就可以使用装饰器,也就是给短息发送类装饰一个语音功能,让它不仅可以发送短信,此外还可以实现语音发送的功能。

5.策略设计模式

软件开发中,一个对象对不同场景采用不同的策略去实现同一个功能,就是策略方法。如果你听说过多态,就会发现它和多态的定义很像,不同的是多态是不同对象对同一操作的不同的处理方法,而策略模式是同一个对象对同一个操作采用不同的策略进行处理操作。淘宝首页的千人千面就是策略模式,都是显示商品,面对不同的人,显示的就是不同的商品,这就是由策略决定的。

6.抽象工厂设计模式

抽象工厂设计模式提供了一个接口用于创建一组相关或相互依赖的对象;该模式由子类选择决定具体的实例化类。抽象工厂方法模式中工厂类(核心)将具体创建产品的工作交给子类去做,仅负责给出具体工厂类必须实现的接口。

7.代理设计模式

代理设计模式是为其他对象提供一种代理,以控制对这个对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。代理设计模式的结构比较简单,主要是通过定义一个继承抽象主题的代理来包含真实主题,从而实现对真实主题的访问。

8.迭代器设计模式

迭代器设计模式就是提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示。它支持以不同的方式遍历一个聚合对象。在迭代器模式中,增加新的聚合类和迭代器类都很方便,无须修改原有代码。

9.备忘录设计模式

备忘录设计模式又称为快照设计模式。在不破坏封装性的前提下,捕获对象内部状态,并保存,以便以后,可以恢复到该状态。

10.访问者设计模式

访问者设计模式是将数据结构与数据操作分离,在不改变元素数据结构的情况下,进行添加元素操作。需要对一个对象结构中的对象进行很多不同的并且不相关的操作,而需要避免让这些操作”污染”这些对象的类,使用访问者模式将这些封装到类中。

除上述常见的设计模式以外,在软件开发中还有一些可能会用到的设计模式,如模板设计模式、状态设计模式、中介者设计模式、单例设计模式、原型设计模式、建造者设计模式等。

延伸阅读

软件开发常用的五种模式是什么

1.瀑布开发模式

瀑布开发模式是一种传统的软件开发模式,瀑布法是一个刚性的线性模型,其中包括顺序阶段(需求,设计,实施,验证,维护),其中每一个阶段的目标性都很明确。而且在进入下一阶段之前,每个阶段目标必须100%地完成,但这种模式如果进行回溯修改时会比较麻烦。

但该方法的线性特性使其易于理解和管理。如果软件项目对稳定要求比较高,那可以选择这种开发模式。在使用瀑布开发模式时丰富的软件开发经验会比较有帮助。然而,由于刚性结构和严格的控制特点,通常会导致项目的开发时间比较慢、成本比较昂贵。

2.边做边改模式

边做边改模式是指开发人员分析需求编写程序,调试通过后生成的名列前茅个软件版本,提供给用户使用后,如果出现问题或者客户由现代需求,就重新修改代码。这个模式的优点是前期出成效率高;缺点是没有规划和设计环节,具有很大的风险,后期维护困难。

3.快速原型模式

快速原型模式整合了边做边改和瀑布模式的优点,快速制造一个原型,然后根据客户要求,改进开发软件,满足客户的要求,开发出让客户满意的软件产品。这个模式的优点是周期短,减少风险;缺点是效率低、难以维护。

4.迭代开发模式

软件开发经过需求分析、设计、实现和测试,开发工作可以在需求确定之前启动,并在一次迭代中完成系统的一部分功能的开发工作,再通过客户的反馈来细化需求,开始新一轮的迭代。这个模式的优点是降低了开支风险和按时进入市场的风险,加快了开发进度,复用性高。

5.敏捷开发模式

敏捷开发模式有许多不同的形式,包括:Scrum,Crystal,Extreme Programming(XP)和Feature-Driven Development(FDD)。它通过迭代开发,关注互动沟通等方法来降低软件开发过程中的风险,同时也可以减少在开发中的资源消耗。好处是通过早期发现和修复缺陷来提高开发的效率。但这种模式比较依赖用户的信息反馈,而且这种模式比较适用于小规模的软件开发公司,习惯于“瀑布法”的程序员,管理层和组织可能难以适应敏捷。

回复

我来回复
  • 暂无回复内容

注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部