首页 > 其他分享 >设计模式在实际开发中的应用

设计模式在实际开发中的应用

时间:2022-11-29 11:36:56浏览次数:34  
标签:策略 校验 模式 工厂 算法 开发 应用 设计模式


我相信有些人学了设计模式,依然不知道设计模式的应用场景,感觉我们日常开发中,仅仅写些逻辑,调下接口,连接下数据库就完事儿了。感觉设计模式都被框架运用的淋淋尽致,似乎没有我们可发挥的余地了。设计模式到底有什么用?在什么场景下用?它的优势是什么?似乎我们感受不到,讲真的,那学了也是一脸懵逼。不知道有没有人像我最开始学习设计模式一样。

目的:本文将讲诉自己在实际开发中所用到的设计模式,让更多朋友体会到实际开发中很多时候也可以用设计模式。给个借鉴,打开思路。学习别人的开发思路,并运用到自己的开发中。

说明:本文会陆续更新,可能不会一次性分享完所有设计模式,关注我,以后会更多!

正文:

一:设计模式之策略模式

关于策略模式的理论在这里就不累赘,相信看到此文章的朋友都是看过很多有关文章,已经有大概了解了。欲在这里寻得策略模式的实际应用。

(1)字符串截取方法。

在实际项目中主要是根据配置文件中的连接数据库的url截取出数据库名字。因为暂时可能用的是mysql,但以后可能会用oracle。postgresql等等 也说不定。但是每个url的格式不同,截取方法也就不同,不可能每次修改源码。采用策略模式,想要扩展截取其它字符串时,需语言添加一个截取类,就行了。主要作用易于扩展,容易维护,解耦。


(2)校验类的未知扩展

业务场景:在开发公司框架时,由于该框架省去了实体类,mapper,mapper.xml、部分service类和controller类,都用统一执行sql方法和统一返回结果。让开发人员只专注于写sql。 这样一来,关于参数的校验,校验方式,校验类型,校验结果,都得存于数据库,然后在统一执行sql的controller层,根据sql,及替换sql内的参数值,实现参数校验。


 

二:设计模式之单例模式

在整个应用生命周期内,对某个类,只实例化一次,应用场景为:连接数据库,记录日志,使用单例模式可以避免不必要的资源消耗

 

三:设计模式之简单工厂模式

简单工厂模式:在本人实际开发中所用到的地方,在策略模式实现起来不太优雅的情况下,改为简单工厂模式

简单工厂模式和策略模式,一个是创建型,另一个是行为型,然而两种不同类型的模式,在某些地方也有一丝的相似之处,同时在某种场景下结合使用,能起到特别好的效果。

两者对比:

1、策略模式:

设计模式在实际开发中的应用_策略模式

策略模式是行为型模式,它定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。

  在一段代码里,使用了逻辑控制(if-else,swich-case)来决定算法,算法有相似的方法和函数,就可以选择策略模式。

  那么也就是说:

  1、某方法里有多个条件语句,条件语句代码块里有许多行为过程。

  2、其算法能封装到策略类

  2、算法随意切换

  3、算法与客户端隔离

   这样一来,通过选择对应的策略类,作为参数传到Content类里,在运行时配置对应的算法。

 

2、简单工厂模式:

设计模式在实际开发中的应用_设计模式_02

简单工厂模式是创建型模式,创建型模式顾名思义,也就是说在创建对象的时候,遇到了瓶颈才会选择的设计模式。那么该什么情况使用呢。

   简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建并且返回哪一个产品类(这些产品类继承自一个父类或接口)的实例。

   那么也就是说:

   1、有已知的产品类

   2、你无法准确的知道编译哪个产品类

   3、需要在运行时决定创建哪个产品类

   4、产品类不多

   很明显看出,在创建对象上的灵活性高,但是工厂类只能创建可能会使用到的产品类,假如新添了产品类就得修改工厂类,这样就会违反开闭原则。

   

总结:   

        简单工厂模式和策略模式很相似。怎么相似?都是三个业务子类继承抽象父类,通过传入参数到容器类(工厂模式的factory类,策略模式的Content类),选择对应的类进行行为操作。

       从上面的描述总结出,在运行时,两者都是通过传入参数进行配置,简单工厂模式则是选择创建出需要的对象,而策略模式则是配置出需要的行为算法。一个是对象创建,另一个是行为算法的替换。

      其实,UML图的确从外形上看没多大区别,但是,本质却是大大不同。

 

 

四、设计模式之建造者模式

关于建造者模式的应用,由于篇幅问题,可见我另一篇博文:  ​​点击我​​

五、设计模式之装饰器模式

关于建造者模式的应用,由于篇幅问题,可见我另一篇博文:  ​​点击我​​

 

 

 

 

标签:策略,校验,模式,工厂,算法,开发,应用,设计模式
From: https://blog.51cto.com/u_13002884/5894597

相关文章