1.【what】什么是设计模式?
设计模式:麻烦当下,方便将来。像是编程的“编法23计”
最开始接触编程,所有的代码文件只有一个main()方法。。。🚬
不堪回首。
慢慢的学了函数、学了递归、学了面向对象、开始追求可维护性、可扩展性
渐、总结编码经验
1.1 是代码设计经验,是典型解决方案
-
为了可重用代码,提高代码的可扩展性和可维护性。
-
是软件设计中常见问题的典型解决方案。
1.2 和算法的区别
算法更像是菜谱: 提供达成目标的明确步骤。
而模式更像是蓝图: 你可以看到最终的结果和模式的功能, 但需要自己确定实现步骤。
1.3 是常见问题的工具箱
其中的工具就是各种经过实践验证的解决方案。
即使你从未遇到过这些问题, 了解模式仍然非常有用, 因为它能指导你如何使用面向对象的设计原则来解决各种问题。
2.【why】为什么会有设计模式?
因为要考虑以后要如何偷懒。
这个就没有解释的必要了吧。
3.【which】有哪些设计模式?
根据我从网络查询的结果:
3.1 根据其设计模式意图或目的来分类
-
创建型模式(Creational Pattern)
提供创建对象的机制, 增加已有代码的灵活性和可复用性。
-
结构型模式
介绍如何将对象和类组装成较大的结构, 并同时保持结构的灵活和高效。
-
行为模式
负责对象间的高效沟通和职责委派。
3.2 创建型模式(Creational Design Pattern)
将软件模块中对象的创建和对象的使用分离。
创建型模式在创建什么(What),由谁创建(Who),何时创建(When)等方面都为软件设计者提供了尽可能大的灵活性。
创建型模式隐藏了类的实例创建细节,通过隐藏对象如何被创建和组合在一起达到使整个系统独立的目的。
具体有这5个:
1.简单工厂模式(Simple Factory)
2.工厂方法模式(Factory Method)
3.抽象工厂模式(Abstract Factory)
4.建造者模式(Builder)
5.原型模式(Prototype)
6.单例模式(Singleton)
3.3 结构型模式(Structural Design Patterns)
3.4 行为模式(Behavioral Design Patterns)
…
日后用到具体模式再展开说说。
4.【how】如何选择设计模式?
阿尔伯特· 爱因斯坦曾经说:“ 提出一个问题往往比解决一个问题更重要。"
所以这个问题先提出来,目前实践的太少,回答不了🚬。
5.【!!】不当使用设计模式
“如果你只有一把铁锤, 那么任何东西看上去都像是钉子。”
这个问题常常会给初学模式的人们带来困扰: 在学习了某个模式后, 他们会在所有地方使用该模式, 即便是在较为简单的代码也能胜任的地方也是如此。