关于GoF提到的23种设计模式前面的博文几乎全都涉及到了,只是根据我们实际开发中使用的频率不同,我的侧重点也有所不同。学完这些所有的设计模式之后,我也有一些自己的心得体会,下面简单的来说一说。
学习过程中了解到了设计模式有八大原则:依赖倒置原则,开放封闭原则,单一职责原则,Liskov替换原则,接口隔离原则,对象组合优于类继承,封装变化点,面向接口编程。这些原则有些很抽象,有些很具体,具体的东西很好理解,抽象的东西只有深入了解每个设计模式之后才能知道它的含义。其实个人觉得我们在实际编写代码的过程中不需要特意地去关注这些原则,就像我前面的博文中提到的那样,只要能够分清楚代码中稳定的和变化的部分,这就是一个很好的开始。然后我们再从稳定部分中提取到一个合适的接口用来应对未来可能发生的变化,这样就是一个好的设计了。至于你的设计有没有符合这八大原则、属不属于23种经典设计模式之一,这些都不重要。重要的是这个设计能够很好的解决当下的问题,并且能够应对未来可能的变化这样就够了。
说说,学完设计模式之后,我觉得很重要的一些感悟(其实有些已经包含在那八大原则之内了):
1,如果写代码的过程中不能明确怎样做才最好,那就先写出来,后面再重构。并不是每个人都是大牛,都能在开始开发之前就预想到了所有的可能,只有先写出来,才能再后面重构的时候找到自己的不足并改正。
2,找到代码中稳定的部分和变化的部分。把稳定的部分提取出来,变为基类(抽象化),并提供可供变化的接口(虚函数)以应对未来可能的变化。
3,能包含另外一个类的指针就别用继承。
4,两个类或者多个类之间的关系如果太过紧耦合,就想办法使其变为松耦合。(加一个中间类)
5,一个类不能设计的太过复杂,如果功能太多,就把它们拆分开。
结合实际的工作,我觉得下面的一些设计模式很重要,可能会在工作中经常使用到。
1,单例模式。这个不用说,太经典了
2,模板方法。当你想设计一个步骤或者说框架给别人用时,可能会需要它。
3,策略模式。当你的代码中有大量的if/else或者switch/case时,并且在未来这条件变量会经常变动时,试试策略模式吧。
4,观察者模式。非常重要,它很好的解决了我们程序中各个对象的消息通信问题。
5,桥接模式。当你的类设计的过于臃肿的时候,想想看是不是可以拆开来看看。
6,工厂方法和抽象工厂。创建多个对象时很好的选择。
7,享元模式。它的思想在对象池、线程池中有很好的体现。
8,适配器模式。改造老的类,以适应新的变化。
9,代理模式。别人写的好东西,拿来自己用用。
10,组合模式。它的思想在一些GUI设计中会经常看到。
最后,希望自己在以后的工作中能够做到“手中无剑,心中有剑”!
版权声明:本文为CSDN博主「梦话王子」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zouyang85457013/article/details/104821368