以 JavaScript 为例子发表一下我对工厂模式 (Factory Pattern) 的看法
为什么不直接 new 呢? 我自己写代码直接 new 自己写的类不就好了么?
这里不得不提一下设计模式的意义。设计模式并不是凭空捏造的,而是长期开发所形成的经验之谈,当然这些经验自然是成功的,被认可的经验,否则设计模式就不会被那么多人认可和推崇了。
这里的 DefaultDict
指的是类似于 Python 中的 defaultdict
的一种类。其基本特点就是当某个属性不存在于该对象中时,该对象会自动为这个属性创建一个默认值。这个默认值是由用户在创建 DefaultDict
时指定的。
举个例子,现在需要一个对象,如果某个属性不在这个对象时,在为这个属性赋值为 0.
howdoi – 一款通过命令行帮你从 stackoverflow 中寻找答案的工具,其源代码部分不足 300 行。同时,这份代码被 The Hitchhiker’s Guide to Python! 推荐为适合新手源码阅读的代码。因此,在读完源码后,我分享一下我对这份代码的理解。
这里采用的版本是 tree 中标号为 d84afdee60 的那一版
简单的说, CPython
是 Python 解释器的一个实现。换句话说,Python 解释器是由 C 写的,然后由 GCC 之类的编译器编译而成的可执行文件。除了 CPython,还有 PyPy(用 Python 实现的 Python 解释器),Skulpt(用 JavaScript 实现的 Python 解释器) 等等。如果你不知道你用的是哪一个,那么你一定用的就是 CPython。因为 CPython 是 Python 官方的解释器实现,其它均属于第三方实现。
对于从 Python 源码到解释器执行它们的这个过程,我把它分为两大步 —— 编译(Compiling) 与 解释(Interpreting)。
之前用的主题是基于 landscape, 虽然这确实是一个不错的主题,使用上也没什么不便,但毕竟这是一个他人贡献的主题。我一直想试着自己做一个主题。之前也尝试在 landscape 上改,修改了一些颜色,对 CSS 做了一些简单修改,但布局没变,整体一眼还是能看出这是 landscape,并且因为我当时不熟悉 EJS 模板,对 Sass 及 CSS3 不是特别熟悉,所以有些功能的实现也完全不知道怎么做,比如一些透明效果的动画。
最近一段时间,相对以前来说稍微不忙了点,所以趁这个机会试着做一个主题了。