当前位置:  开发笔记 > 编程语言 > 正文

OO设计原则是否适用于Python?

如何解决《OO设计原则是否适用于Python?》经验,为你挑选了2个好方法。

似乎许多OO讨论使用Java或C#作为示例(例如Head First Design Patterns).

这些模式是否同样适用于Python?或者如果我遵循设计模式,我最终会用Python编写Java(这显然是一件非常糟糕的事情)?



1> dsimcha..:

最大的区别是Python是鸭子类型,这意味着你不需要像Java那样详细规划类层次结构,并且具有一流的功能.例如,当您可以只传递一个函数而不是必须创建接口等来模拟高阶函数时,策略模式变得更加简单和明显.更一般地说,Python具有许多常见设计模式的语法糖,例如迭代器和前面提到的策略.理解这些模式可能是有用的(我读过Head First并发现它非常有用),但想想Pythonic实现它们的方法,而不仅仅是像在Java中那样做事.



2> user21714..:

Python有它自己的设计习语.有些标准模式适用,有些则不适用.战略或工厂之类的东西都有语言支持,使它们透明化.

例如,对于一流的类型,任何东西都可以是工厂.不需要工厂类型,您可以直接使用该类来构造您想要的任何对象.

基本上,Python有自己的设计习惯,有些不同,主要是因为它非常动态并具有令人难以置信的内省功能.

例:

x = list
my_list = x(range(0,5)) #creates a new list by invoking list's constructor

通过将类类型分配给可调用对象,您基本上可以删除代码中的任何"工厂"类型.您只剩下产生符合某些给定约定的对象的callable.

此外,Python中的设计模式无法有效地用其他静态类型语言表示.元类和函数装饰器就是很好的例子.

推荐阅读
携手相约幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有