<html dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<style id="owaParaStyle" type="text/css">P {margin-top:0;margin-bottom:0;}</style>
</head>
<body ocsi="0" fpstyle="1" style="word-wrap:break-word; color:rgb(0,0,0); font-size:14px; font-family:Calibri,sans-serif">
<div style="direction: ltr;font-family: Courier New;color: #000000;font-size: 10pt;">
OpenStack (and Python in general) isn't big on the classic Gang-of-Four Design Patterns.
<br>
<br>
OpenStack code seems to stem more from a "set of idioms" starting with <br>
<a href="https://wiki.openstack.org/wiki/BasicDesignTenets" target="_blank">https://wiki.openstack.org/wiki/BasicDesignTenets</a><br>
<br>
Beyond that, PEP8 and the HACKING guide are table-stakes. <br>
<br>
>From there, look at the main food groups:<br>
1. How configuration flags are dealt with<br>
2. How the Service/Manager/Driver hangs together in most services (like Nova)<br>
3. How DB access is abstracted and the use of Nova Objects (again, speaking for Nova)<br>
4. The use of plugins everywhere (re: Design Tenets)<br>
5. Proper logging/notification generation. <br>
6. Good RPC etiquette ... versioning, cast() vs call(), dealing with retries/failures/etc.
<br>
7. The WSGI stack <br>
8. API design<br>
9. Command line tools<br>
<br>
A simple look at DevStack output will show that everyone is kind of a unique snowflake. So, look at the project you're most interested in for their "local flavor".<br>
<br>
>From there, you should have a base understanding of "The OpenStack Way". <br>
<br>
I've been meaning to do a blog post on this stuff, but perhaps this is a good start? I'm sure others can pile on.<br>
<br>
Welcome to the party!<br>
-S<br>
<br>
<div style="font-family: Times New Roman; color: #000000; font-size: 16px">
<hr tabindex="-1">
<div style="direction: ltr;" id="divRpF366230"><font size="2" color="#000000" face="Tahoma"><b>From:</b> Craig Jellick [cjellick@godaddy.com]<br>
<b>Sent:</b> Friday, February 28, 2014 1:09 AM<br>
<b>To:</b> 卐天卍; Dustin J. Mitchell<br>
<b>Cc:</b> openstack<br>
<b>Subject:</b> Re: [Openstack] 回复: Python Design Patterns in OpenStack<br>
</font><br>
</div>
<div></div>
<div>
<div>
<div>I think you should take a look a this talk:</div>
<div><a href="http://blip.tv/pycon-us-videos-2009-2010-2011/the-lack-of-design-patterns-in-python-2091776" target="_blank">http://blip.tv/pycon-us-videos-2009-2010-2011/the-lack-of-design-patterns-in-python-2091776</a></div>
<div>TL;DR: Things that require design patterns in a language like java are so simple in python that they aren't really discussed explicitly.</div>
<div><br>
</div>
<div>/Craig J</div>
</div>
<div><br>
</div>
<span id="OLK_SRC_BODY_SECTION">
<div style="font-family:Calibri; font-size:11pt; text-align:left; color:black; border-bottom:medium none; border-left:medium none; padding-bottom:0in; padding-left:0in; padding-right:0in; border-top:#b5c4df 1pt solid; border-right:medium none; padding-top:3pt">
<span style="font-weight:bold">From: </span>卐天卍 <<a href="mailto:54linhao@gmail.com" target="_blank">54linhao@gmail.com</a>><br>
<span style="font-weight:bold">Date: </span>Thursday, February 27, 2014 6:55 PM<br>
<span style="font-weight:bold">To: </span>"Dustin J. Mitchell" <<a href="mailto:dustin@mozilla.com" target="_blank">dustin@mozilla.com</a>><br>
<span style="font-weight:bold">Cc: </span>openstack <<a href="mailto:openstack@lists.openstack.org" target="_blank">openstack@lists.openstack.org</a>><br>
<span style="font-weight:bold">Subject: </span>[Openstack] 回复: Python Design Patterns in OpenStack<br>
</div>
<div><br>
</div>
<div>
<div>
<div>Thanks Dustin,</div>
<div><br>
</div>
Actually, my friends learn design patterns from the source code like Java design patterns in Android.
<div><br>
</div>
<div>They also learn it from some technical blogs! But after searching "openstack design patterns" in google, there is no useful information.</div>
<div><br>
</div>
<div>I am wondering whether the openstack developers will take some notes relevant to design patterns.</div>
<div>I think it can help the beginners to read openstack source code.</div>
<div><br>
</div>
<div><br>
</div>
<div style="font-size:12px; font-family:Arial Narrow; padding:2px 0 2px 0">------------------ 原始邮件 ------------------</div>
<div style="font-size:12px; background:#efefef; padding:8px">
<div><b>发件人:</b> "Dustin J. Mitchell"; </div>
<div><b>发送时间:</b> 2014年2月27日(星期四) 晚上9:38</div>
<div><b>收件人:</b> "54linhao"<<a href="mailto:54linhao@gmail.com" target="_blank">54linhao@gmail.com</a>>;
</div>
<div><b>抄送:</b> "openstack"; </div>
<div><b>主题:</b> Re: [Openstack] Python Design Patterns in OpenStack</div>
</div>
<div><br>
</div>
----- Original Message -----<br>
> Hi, guys:<br>
> I am learning Python and Design Patterns, I want to know how Design Patterns<br>
> can be used in real world project especially python project.<br>
> <br>
> I know OpenStack is developed using python. So is there some materials of<br>
> Design Patterns used in OpenStack?<br>
<br>
Design patterns tend to be fairly abstract concepts, and become part of the general design of a project, rather than being documented explicitly.  So it may be more instructive for you to look for them yourself.<br>
<br>
As an example, the way that managers are specified in the configuration files to change the behavior of services is an example of a pattern - which one?<br>
<br>
You may also want to look at some smaller Python projects - perhaps discovered by shopping around the cheese shop - to see where they have or have not used patterns, and maybe even practice applying a pattern or two where you think it would improve the project.<br>
<br>
Dustin<br>
</div>
</div>
</span></div>
</div>
</div>
</body>
</html>