<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>设计模式 on Ther 的博客</title>
        <link>https://blog.ther.cool/categories/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/</link>
        <description>Recent content in 设计模式 on Ther 的博客</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>en-us</language>
        <lastBuildDate>Thu, 02 Jan 2020 16:57:10 +0800</lastBuildDate><atom:link href="https://blog.ther.cool/categories/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>设计模式</title>
        <link>https://blog.ther.cool/posts/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/</link>
        <pubDate>Thu, 02 Jan 2020 16:57:10 +0800</pubDate>
        
        <guid>https://blog.ther.cool/posts/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/</guid>
        <description>&lt;h2 id=&#34;面向对象设计原则&#34;&gt;面向对象设计原则&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;可维护性(Maintainability)&lt;/strong&gt;：指软件能够被理解、改正、适应及扩展的难易程度。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;可复用性(Reusability)&lt;/strong&gt;：指软件能够被重复使用的难易程度。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://s2.loli.net/2022/11/26/rQXUKy9lV6kOPc8.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;img&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;面向对象设计的目标之一在于&lt;strong&gt;支持可维护性复用&lt;/strong&gt;。&lt;/p&gt;
&lt;h2 id=&#34;设计模式&#34;&gt;设计模式&lt;/h2&gt;
&lt;h3 id=&#34;设计模式的分类&#34;&gt;设计模式的分类&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;根据目的（模式是用来做什么的）可分为&lt;strong&gt;创建型&lt;/strong&gt;(Creational)，&lt;strong&gt;结构型&lt;/strong&gt;(Structural)和&lt;strong&gt;行为型&lt;/strong&gt;(Behavioral)三类：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;创建型模式主要用于&lt;strong&gt;创建对象&lt;/strong&gt;；&lt;/li&gt;
&lt;li&gt;结构型模式主要用于&lt;strong&gt;处理类或对象的组合&lt;/strong&gt;；&lt;/li&gt;
&lt;li&gt;行为型模式主要用于描述类或对象如何&lt;strong&gt;交互&lt;/strong&gt;和怎样&lt;strong&gt;分配职责&lt;/strong&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;根据范围，即模式主要是处理类之间的关系还是处理对象之间的关系，可分为&lt;strong&gt;类模式&lt;/strong&gt;和&lt;strong&gt;对象模式&lt;/strong&gt;两种：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;类模式处理类和子类之间的关系，这些关系通过继承建立，在编译时刻就被确定下来，是一种&lt;strong&gt;静态&lt;/strong&gt;关系；&lt;/li&gt;
&lt;li&gt;对象模式处理对象间的关系，这些关系在运行时变化，更具&lt;strong&gt;动态&lt;/strong&gt;性。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://s2.loli.net/2022/11/26/unQKGlX4xp6gMvr.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;img&#34;
	
	
&gt;&lt;/p&gt;
&lt;h3 id=&#34;创建型模式&#34;&gt;创建型模式&lt;/h3&gt;
&lt;p&gt;&lt;img src=&#34;https://s2.loli.net/2022/11/26/18tq7SsnegLZVfb.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;img&#34;
	
	
&gt;&lt;/p&gt;
&lt;h3 id=&#34;结构型模式&#34;&gt;结构型模式&lt;/h3&gt;
&lt;p&gt;&lt;img src=&#34;https://s2.loli.net/2022/11/26/Yr2zK5eNXg1T6wq.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;img&#34;
	
	
&gt;&lt;/p&gt;
&lt;h3 id=&#34;行为型模式&#34;&gt;行为型模式&lt;/h3&gt;
&lt;p&gt;&lt;img src=&#34;https://s2.loli.net/2022/11/26/E1cFZ4Nx2iWwD6Q.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;img&#34;
	
	
&gt;&lt;/p&gt;
&lt;h3 id=&#34;一些名词&#34;&gt;一些名词&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;模式(Pattern)&lt;/strong&gt; 起源于建筑业。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;模式：&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Context&lt;/strong&gt;（模式可适用的前提条件）；&lt;/p&gt;
&lt;p&gt;Theme或&lt;strong&gt;Problem&lt;/strong&gt;（在特定条件下要解决的目标问题）；&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution&lt;/strong&gt;（对目标问题求解过程中各种物理关系的记述）。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;模式是&lt;strong&gt;特定环境下&lt;/strong&gt;人们解决某类重复出现&lt;strong&gt;问题&lt;/strong&gt;的一套成功或有效的&lt;strong&gt;解决方案&lt;/strong&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A pattern is a successful or efficient &lt;strong&gt;solution&lt;/strong&gt; to a recurring &lt;strong&gt;problem&lt;/strong&gt; within a &lt;strong&gt;context&lt;/strong&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;软件模式&lt;/strong&gt;：在&lt;strong&gt;一定条件下&lt;/strong&gt;的&lt;strong&gt;软件开发问题&lt;/strong&gt;及其&lt;strong&gt;解法&lt;/strong&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;问题描述；前提条件（环境或约束条件）；解法；效果。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;大三律(Rule of Three)&lt;/strong&gt;：只有经过3个以上不同类型（或不同领域）的系统的校验，一个解决方案才能从候选模式升格为模式。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;设计模式(Design Pattern)&lt;/strong&gt;：一套&lt;strong&gt;被反复使用的&lt;/strong&gt;、&lt;strong&gt;多数人知晓的&lt;/strong&gt;、&lt;strong&gt;经过分类编目的&lt;/strong&gt;、&lt;strong&gt;代码设计经验的&lt;/strong&gt;总结。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;是一种用于对软件系统中不断重现的设计问题的&lt;strong&gt;解决方案&lt;/strong&gt;进行&lt;strong&gt;文档化&lt;/strong&gt;的技术。&lt;/p&gt;
&lt;p&gt;是一种&lt;strong&gt;共享专家设计经验&lt;/strong&gt;的技术。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;目的：为了可重用代码、让代码更容易被他人理解、提高代码可靠性。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;设计模式的&lt;strong&gt;定义&lt;/strong&gt;：&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;设计模式是在&lt;strong&gt;特定环境下&lt;/strong&gt;为解决&lt;strong&gt;某一通用软件设计问题&lt;/strong&gt;提供的&lt;strong&gt;一套定制的解决方案&lt;/strong&gt;，该方案描述了对象和类之间的相互作用。&lt;/p&gt;
&lt;p&gt;Design patterns are descriptions of communicating objects and classes that are customized to &lt;strong&gt;solve&lt;/strong&gt; a general &lt;strong&gt;design&lt;/strong&gt; &lt;strong&gt;problem&lt;/strong&gt; in a particular &lt;strong&gt;context&lt;/strong&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;设计模式的基本要素：&lt;strong&gt;关键要素&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;模式名称&lt;/strong&gt;、&lt;strong&gt;问题&lt;/strong&gt;、目的、&lt;strong&gt;解决方案&lt;/strong&gt;、&lt;strong&gt;效果&lt;/strong&gt;、实例代码和相关设计模式。&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
