O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.
Design Patterns
‫خورد؟‬ ‫می‬ ‫دردی‬ ‫چه‬ ‫به‬ ‫و‬ ‫چیست‬
‫تهرانی‬ ‫مسیح‬ ‫محمود‬ :‫تحریر‬ ‫به‬
. @ .Mahmud tehrani gmail c...
Desgin Pattern‫؟‬ ‫چیست‬
‫توسط‬ ‫قبل‬ ‫که‬ ‫نویسی‬ ‫برنامه‬ ‫دنیای‬ ‫متداول‬ ‫مسایل‬
‫الگوهایی‬ ‫شکل‬ ‫به‬ ‫و‬ ،‫طراحی‬ ‫ب...
‫نویسی‬ ‫برنامه‬ ‫و‬ ‫افزار‬ ‫نرم‬ ‫طراحی‬ ‫در‬
!‫همینطوره‬ ‫هم‬
‫نویسی‬ ‫کد‬ ‫چطور‬ ‫رو‬ ‫مسئله‬ ‫یک‬ ‫گن‬ ‫می‬ ‫شما‬ ‫به...
GOF
‫بحث‬Design Pattern‫نرم‬ ‫دنیای‬ ‫در‬ ‫بار‬ ‫اولین‬ ‫برای‬
‫توسط‬ ‫افزار‬GoF.‫گرفت‬ ‫صورت‬
‫ی‬ ‫درباره‬GoF:
: ‫شامل‬ ‫...
Creational patterns
(‫اشیاء‬ ‫ایجاد‬ ‫های‬‫)روش‬

Abstract factory

Factory method

Builder

Prototype

Singleton
Structural patterns
(‫ها‬‫کل س‬ ‫و‬ ‫اشیاء‬ ‫ترکیب‬ ‫)چگونگی‬

Adapter

Bridge

Composite

Decorator

Facade

Flywei...
Behavioral patterns
(‫یکدیگر‬ ‫با‬ ‫اشیاء‬ ‫ارتباط‬ ‫روی‬ ‫)تمرکز‬

Chain of responsibility

Command

Interpreter

Ite...
Singleton Pattern

‫این‬pattern‫الگوهای‬ ‫بندی‬ ‫طبقه‬ ‫در‬Creational
‫دارد‬ ‫جای‬

:‫هدف‬
‫ایجاد‬ ‫نمونه‬ ‫یک‬ ‫فقط‬ ‫...
‫راه‬ ‫آسانترین‬
‫کل س‬ ‫داخل‬ ‫استاتیک‬ ‫متغییر‬ ‫یک‬ ‫ایجاد‬
True‫نمونه‬ ‫اولین‬ ‫تولید‬ ‫صورت‬ ‫در‬ ‫متغییر‬ ‫دادن‬ ‫...
‫طراحی‬ ‫الگوی‬
‫در‬ ‫سازی‬ ‫پیاده‬PHP
**/
*class Singleton
/*
class Singleton
}
{
‫متغییر‬ ‫تعریف‬
**/
* @var Singleton reference to singleton
instance
/*
$private static instance;
‫متود‬getinstance
**/
*gets the instance via lazy initialization
( )created on frst usage
*
* @return self
/*
public stati...
Private construct
**/
*:is not allowed to call from outside
private!
*
/*
__private function construct()
}
{
Private clone
**/
*prevent the instance from being cloned
*
* @return void
/*
__private function clone()
}
{
Private wakeup
**/
*prevent from being unserialized
*
* @return void
/*
__private function wakeup()
}
{
‫کاربرد‬Singleton

‫به‬ ‫باز‬ ‫کانکشن‬ ‫یک‬ ‫فقط‬ ‫و‬ ‫دیتابیس)فقط‬ ‫تو‬ ‫کانکشن‬
(‫باشیم‬ ‫داشته‬ ‫دیتابیس‬

‫فقط‬ ‫ما‬...
‫عملی‬ ‫مثال‬Singletone‫کل س‬
‫دیتابیس‬
class Db{
$_ =private static instance NULL;
$ =private connected FALSE;
$ =private...
‫دیتابیس‬ ‫از‬ ‫استفاده‬ ‫اول‬ ‫مثال‬
' . .include db class php';
//create instane of Db class
$= ::db Db getInstance();
t...
‫دیتابیس‬ ‫از‬ ‫استفاده‬ ‫دوم‬ ‫مثال‬
$= ::db Db getInstance();
try{
$-> ($ [' '][' '],db connect cnfg db hostname
$ [' ']...
Próximos SlideShares
Carregando em…5
×

Design Patterns چیست و به چه دردی می خورد؟ (persian)

5.937 visualizações

Publicada em

دیزاین پترن یا الگو های طراحی نرم افزار و برنامه نویسی

Publicada em: Software

Design Patterns چیست و به چه دردی می خورد؟ (persian)

  1. 1. Design Patterns ‫خورد؟‬ ‫می‬ ‫دردی‬ ‫چه‬ ‫به‬ ‫و‬ ‫چیست‬ ‫تهرانی‬ ‫مسیح‬ ‫محمود‬ :‫تحریر‬ ‫به‬ . @ .Mahmud tehrani gmail com :// .http masihtehrani ir
  2. 2. Desgin Pattern‫؟‬ ‫چیست‬ ‫توسط‬ ‫قبل‬ ‫که‬ ‫نویسی‬ ‫برنامه‬ ‫دنیای‬ ‫متداول‬ ‫مسایل‬ ‫الگوهایی‬ ‫شکل‬ ‫به‬ ‫و‬ ،‫طراحی‬ ‫بهینه‬ ‫بصورت‬ ‫افرادی‬ .‫اند‬ ‫شده‬ ‫بندی‬ ‫دسته‬ ‫استاندارد‬ ‫با‬ ‫دیگران‬ ‫که‬ ‫چرخی‬ ‫نیستید‬ ‫مجبور‬ ‫دیگر‬ ‫شما‬ ‫واقع‬ ‫در‬ .‫کنید‬ ‫اختراع‬ ‫دوباره‬ ‫رو‬ ‫کردند‬ ‫اختراع‬ ‫مشقت‬ : ‫دیگر‬ ‫تعبیری‬ ‫به‬ ‫که‬ ‫کسی‬OOP‫که‬ ‫ست‬ ‫کسی‬ ‫مثل‬ ‫میدونه‬ ‫خوب‬ ‫رو‬ ‫اما‬ ‫میشناسه؛‬ ‫رو‬ ‫کیک‬ ‫یک‬ ‫ی‬ ‫دهنده‬ ‫تشکیل‬ ‫اجزای‬ ) ‫طراحی‬ ‫الگوهای‬ ‫که‬ ‫کسی‬Design Patternas‫رو‬ ( ‫اختیار‬ ‫در‬ ‫هم‬ ‫رو‬ ‫کیک‬ ‫اون‬ ‫دقیق‬ ‫پخت‬ ‫دستور‬ ‫میدونه‬ .‫داره‬ ‫خوشمزه‬ ‫و‬ ‫یکدست‬ ‫همیشه‬ ‫اول‬ ‫نفر‬ ‫کیک‬ : ‫نتیجه‬
  3. 3. ‫نویسی‬ ‫برنامه‬ ‫و‬ ‫افزار‬ ‫نرم‬ ‫طراحی‬ ‫در‬ !‫همینطوره‬ ‫هم‬ ‫نویسی‬ ‫کد‬ ‫چطور‬ ‫رو‬ ‫مسئله‬ ‫یک‬ ‫گن‬ ‫می‬ ‫شما‬ ‫به‬ ‫ها‬ ‫الگو‬ ‫و‬ ‫باشه‬ ‫مهندسی‬ ‫های‬ ‫خاصیت‬ ‫دارای‬ ‫کدتون‬ ‫تا‬ ‫کنید‬ .‫باشه‬ ‫نداشته‬ ‫رو‬ ‫کیفیت‬ ‫بی‬ ‫یا‬ ‫اسپاگتی‬ ‫کد‬ ‫یک‬ ‫مشکلت‬ ‫یک‬ ‫تحت‬ "‫روشن‬ ‫مسئله‬ ‫"یک‬ ‫برای‬ ‫کلی‬ ‫طور‬ ‫به‬ ‫ها‬ ‫الگو‬ .‫دهند‬ ‫می‬ ‫ارایه‬ ‫حل‬ ‫راه‬ ‫یک‬ "‫مشخص‬ ‫"شرایط‬ ‫شی‬ ‫در‬ ‫توانی‬ ‫می‬ ‫چطور‬ ‫بدانیی‬ ‫خواهی‬ ‫می‬ ‫شما‬ ‫مثل‬ ‫محدود‬ ‫و‬ ‫کنترل‬ ‫رو‬ ‫خاص‬ ‫کل س‬ ‫یک‬ ‫از‬ ‫شی‬ ‫ایجاد‬ ‫گرایی‬ ‫نام‬ ‫به‬ ‫هست‬ ‫الگویی‬ ‫کار‬ ‫این‬ ‫برای‬ ‫کنی!؟‬Singleton ‫این‬ ‫حل‬ ‫برای‬ ‫روش‬ ‫بهترین‬ ‫که‬ ‫شده‬ ‫اثبات‬ ‫همه‬ ‫به‬ ‫که‬ ‫نیست‬ ‫لزم‬ ‫شما‬ ‫دیگه‬ ‫الگو‬ ‫این‬ ‫وجود‬ ‫با‬ .‫است‬ ‫مسئله‬ !!!‫کنی‬ ‫حل‬ ‫خودت‬ ‫روش‬ ‫از‬ ‫رو‬ ‫مسئله‬ ‫خودت‬
  4. 4. GOF ‫بحث‬Design Pattern‫نرم‬ ‫دنیای‬ ‫در‬ ‫بار‬ ‫اولین‬ ‫برای‬ ‫توسط‬ ‫افزار‬GoF.‫گرفت‬ ‫صورت‬ ‫ی‬ ‫درباره‬GoF: : ‫شامل‬ ‫نفره‬ ‫چهار‬ ‫گروه‬ ‫یک‬ ,Gamma Erich Richard Helm Ralph Johnson John Vlissides ‫به‬ ‫ملقب‬Gang of Four‫یا‬GoF‫در‬ ‫گروه‬ ‫این‬ .‫هستند‬ ۲۱‫سال‬ ‫اکتبر‬۱۹۹۴: ‫عنوان‬ ‫تحت‬ ‫را‬ ‫کتابی‬ :Design Patterns Elements of Reusable -Object Oriented Software
  5. 5. Creational patterns (‫اشیاء‬ ‫ایجاد‬ ‫های‬‫)روش‬  Abstract factory  Factory method  Builder  Prototype  Singleton
  6. 6. Structural patterns (‫ها‬‫کل س‬ ‫و‬ ‫اشیاء‬ ‫ترکیب‬ ‫)چگونگی‬  Adapter  Bridge  Composite  Decorator  Facade  Flyweight  Proxy
  7. 7. Behavioral patterns (‫یکدیگر‬ ‫با‬ ‫اشیاء‬ ‫ارتباط‬ ‫روی‬ ‫)تمرکز‬  Chain of responsibility  Command  Interpreter  Iterator  Mediator  Memento  Observer  State  Strategy  Template method  Visitor
  8. 8. Singleton Pattern  ‫این‬pattern‫الگوهای‬ ‫بندی‬ ‫طبقه‬ ‫در‬Creational ‫دارد‬ ‫جای‬  :‫هدف‬ ‫ایجاد‬ ‫نمونه‬ ‫یک‬ ‫فقط‬ ‫ما‬ ‫کل س‬ ‫از‬ ‫اینکه‬ ‫از‬ ‫اطمینان‬ ‫برای‬ .‫است‬ ‫شده‬ ‫کل س‬ ‫از‬ ‫نمونه‬ ‫ایجاد‬ ‫کردن‬ ‫محدود‬ ‫برای‬
  9. 9. ‫راه‬ ‫آسانترین‬ ‫کل س‬ ‫داخل‬ ‫استاتیک‬ ‫متغییر‬ ‫یک‬ ‫ایجاد‬ True‫نمونه‬ ‫اولین‬ ‫تولید‬ ‫صورت‬ ‫در‬ ‫متغییر‬ ‫دادن‬ ‫قرار‬ ‫صورت‬ ‫این‬ ‫غیر‬ ‫در‬False.‫دهیم‬‫می‬ ‫قرار‬
  10. 10. ‫طراحی‬ ‫الگوی‬
  11. 11. ‫در‬ ‫سازی‬ ‫پیاده‬PHP **/ *class Singleton /* class Singleton } {
  12. 12. ‫متغییر‬ ‫تعریف‬ **/ * @var Singleton reference to singleton instance /* $private static instance;
  13. 13. ‫متود‬getinstance **/ *gets the instance via lazy initialization ( )created on frst usage * * @return self /* public static function getInstance() } ( === ::$ )if null static instance{ ::$ =static instance new static; {
  14. 14. Private construct **/ *:is not allowed to call from outside private! * /* __private function construct() } {
  15. 15. Private clone **/ *prevent the instance from being cloned * * @return void /* __private function clone() } {
  16. 16. Private wakeup **/ *prevent from being unserialized * * @return void /* __private function wakeup() } {
  17. 17. ‫کاربرد‬Singleton  ‫به‬ ‫باز‬ ‫کانکشن‬ ‫یک‬ ‫فقط‬ ‫و‬ ‫دیتابیس)فقط‬ ‫تو‬ ‫کانکشن‬ (‫باشیم‬ ‫داشته‬ ‫دیتابیس‬  ‫فقط‬ ‫ما‬ ‫ولی‬ ‫شود‬‫می‬ ‫داده‬ ‫بازگشت‬ ‫بارها‬ ‫ل گ‬ ‫ل گ)یک‬ (‫خواهیم‬‫می‬ ‫را‬ ‫آن‬ ‫بار‬ ‫یک‬  ‫سیستم‬ ‫فایل‬ ‫به‬ ‫مربوط‬ ‫برنامه)این‬ ‫فایل‬ ‫ل ک‬ (.‫باشد‬‫می‬
  18. 18. ‫عملی‬ ‫مثال‬Singletone‫کل س‬ ‫دیتابیس‬ class Db{ $_ =private static instance NULL; $ =private connected FALSE; $ =private mysql NULL; $ =private result NULL; __private function construct(); __public function destruct(); __private function clone(); public static function getInstance(); ($ ,public function connect hostname $ , $ , $ )username password database; public function disconnect();
  19. 19. ‫دیتابیس‬ ‫از‬ ‫استفاده‬ ‫اول‬ ‫مثال‬ ' . .include db class php'; //create instane of Db class $= ::db Db getInstance(); try{ $-> ($ [' '][' '],db connect cnfg db hostname $ [' '][' ']cnfg db username, $[' '][' '], $ [' ']cnfg db password cnfg db [' ']database); $= ' *query SELECT FROM user'; $-> ($ )db command query; ($ = $ -> ())while row db fetchAssoc{ $ [' ']echo row username.' : '
  20. 20. ‫دیتابیس‬ ‫از‬ ‫استفاده‬ ‫دوم‬ ‫مثال‬ $= ::db Db getInstance(); try{ $-> ($ [' '][' '],db connect cnfg db hostname $ [' '][' ']cnfg db username, $[' '][' '], $ [' ']cnfg db password cnfg db [' ']database); $= 'query INSERT INTO user' .'(, ,username password email) ' .'VALUE(' . "'1', '123456',user ' 1@ .user gmail com'" ;'('.

×