时间:2021-07-01 10:21:17 帮助过:78人阅读
不要看java的设计模式教材就觉得搞设计模式就是设计interface。显然完全不是这样的。设计模式搞了那么多东西就是在告诉你如何在各种情况下解耦你的代码,让你的代码在运行时可以互相组合。这就跟兵法一样。难道有了飞机大炮兵法就没有用了吗?
当然了,动态类型语言和函数式语言有自己的模式,他们长得跟四人帮写的东西不太一样,因为有些模式已经化作了语法,而有些语法又化作了模式。搞架构切记生搬硬套,这是没有好结果的。
设计模式就是在给语言打补丁,所以同样的东西在Java、C#和C++下面搞出来都不一样呢。C++有些很好的东西python没有,有些东西C++可以流畅的写python就只能打补丁了,如果遇到这个问题的人非常多,这样就产生了新的针对python的模式了
关于设计模式和接口,楼上各位说了不少了。我就不参合了。也一直是个容易引起口水的话题。 既然楼主想用Python把这些设计模式实现一遍。python-patterns ---A collection of design patterns/idioms in PythonPython的设计模式问题可以参考
- <code class="language-python"><span class="kn">from</span> <span class="nn">zope.interface</span> <span class="kn">import</span> <span class="n">Interface</span><span class="p">,</span> <span class="n">implements</span>
- <span class="k">class</span> <span class="nc">IMan</span><span class="p">:</span>
- <span class="k">def</span> <span class="nf">talk</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
- <span class="sd">"""comments"""</span>
- <span class="k">class</span> <span class="nc">Geek</span><span class="p">():</span>
- <span class="n">implements</span><span class="p">(</span><span class="n">IMan</span><span class="p">)</span>
- <span class="k">def</span> <span class="nf">talk</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
- <span class="k">print</span> <span class="s">"知了知了你别吵, 怪蜀黍正在睡午觉"</span>
- <span class="ow">or</span>
- <span class="nd">@implementer</span><span class="p">(</span><span class="n">IMan</span><span class="p">):</span>
- <span class="k">class</span> <span class="nc">Geek</span><span class="p">():</span>
- <span class="k">def</span> <span class="nf">talk</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
- <span class="k">print</span> <span class="s">"知了知了你别吵, 怪蜀黍正在睡午觉"</span>
- </code>
看到这个问题,突然觉得设计模式真是一个很容易被误解的东西