This commit is contained in:
by931
2022-09-06 22:30:37 +08:00
parent 66970f3e38
commit 3d6528675a
796 changed files with 3382 additions and 3382 deletions

View File

@@ -208,7 +208,7 @@ function hide_canvas() {
<p>喜欢写作的人都有一个共同的梦想就是希望有一天能写出一本书。Tony 也一样,出一本畅销书是隐藏在他内心的一个梦想,时刻有一种声音在呼唤着他!这也是他能一直坚持写作的动力,正好在这五年的一个拐点,他该行动了!</p>
<p>Tony 真的动笔了,写起了他酝酿已久的一个主题《从生活的角度解读设计模式》,文章一经发表,便收到了很多读者的好评,同是技术圈的朋友评价:能抓住模式的核心思想、深入浅出,很有见地!做产品和设计的朋友评价:配图非常有趣,文章很有层次感!那些 IT 圈外的朋友则评价:技术的内容一脸懵圈,但故事很精彩,像是看小说或是故事集!真是<strong>一千个读者一千个哈姆雷特</strong>啊。</p>
</blockquote>
<p><img src="assets/2b6e3ca0-88d0-11e8-950d-3f19ed380d25.jpg" alt="enter image description here" /></p>
<p><img src="assets/2b6e3ca0-88d0-11e8-950d-3f19ed380d25.jpg" alt="png" /></p>
<h3>用程序来模拟生活</h3>
<p>Tony 的书是以完全一样的内容呈现给他们,但他的那些朋友却因为专业和工作性质的不同,看到了不同的内容和角度。我们用程序来模拟一下这个场景。</p>
<p>源码示例:</p>
@@ -285,7 +285,7 @@ class ObjectStructure:
<p>这里 Visitor 的访问方法只有一个 visit(),是因为 Python 不支持方法的重载。在一些强类型的语言(如 Java、C++)中,应该有多个方法,针对每一个 DataNode 子类定义一个重载方法。</p>
<h4>类图</h4>
<p>上面的代码框架是访问模式的关键类的实现,访问模式的类图表示如下:</p>
<p><img src="assets/baf83ae0-88d2-11e8-bee1-4fab1cb0896f.jpg" alt="enter image description here" /></p>
<p><img src="assets/baf83ae0-88d2-11e8-bee1-4fab1cb0896f.jpg" alt="png" /></p>
<p>DataNode 是数据结点可接受accept访问者的访问如上面示例中的 DesignPatternBookDataNodeA 和 DataNodeB 是它的具体实现类。Visitor 是访问者类可访问visit具体的对象如上面示例中的 Reader。ObjectStructure 是数据结构的管理类,也是数据对象的一个容器,可遍历容器内的所有元素。</p>
<h4>基于框架的实现</h4>
<p>有了上面的代码框架之后,我们要实现示例代码的功能就会更简单了。最开始的示例代码假设它为 version 1.0,那么再看看基于框架的 version 2.0 吧。</p>