آشنایی با الگوهای طراحی - Design Pattern
سلام :)
در این تاپیک میخواهیم در مورد الگوهای طراحی بیشتر بدانیم.
و از همه ی دوستان علاقمند و یا آشنا با این مفاهیم تقاضا میشه در بحث این تاپیک شرکت سازنده داشته باشند.
هدف تاپیک : امید و انتظار میره به کمک همه ی دوستان عزیز، حداقل 23 الگوی کلاسیک مطرح شده (توسط GoF) در این تاپیک حل و فصل شوند.
این الگوها بصورت خلاصه در تاپیک نکات، ایده ها و ترفندهای کوچک برنامه نویسی در #C نیز مطرح شده و خواهند شد، اما بدلیل نوع آن تاپیک و محدودیتهای ذاتی، امکان بحث و گفتگوهای مفصل در آنجا مقدور نبود.
موفق باشید.
مقدمه ای بر Design Pattern
تاریخچه Design Patterns
ایده ی ایجاد الگوهای طراحی بهیچوجه یک ایده ی نو بشمار نمیرود :
نقل قول:
The idea of design patterns is not new. Ever since there were engineers, design patterns have existed. The architects of the great pyramids must have used design patterns to envision and eventually build one of the most durable testimonies to quality engineering.
So what are design patterns? Simply put, design patterns name and describe effective solutions for common design problems. The name of a pattern gives us a common term that may be used when discussing design solutions. The description provides a guideline or template that can be applied to a frequently occurring design problem.
Desgin Pattern چیست ؟
مسایل متداول دنیای برنامه نویسی که قبلا توسط افرادی بصورت بهینه طراحی، و به شکل الگوهایی استاندارد دسته بندی شده اند.
در واقع شما دیگر مجبور نیستید چرخی که دیگران با مشقت اختراع کردند رو دوباره اختراع کنید.
به تعبیری دیگر :
کسی که OOP رو خوب میدونه مثل کسی ست که اجزای تشکیل دهنده ی یک کیک رو میشناسه؛ اما کسی که الگوهای طراحی (Design Patternas) رو میدونه دستور پخت دقیق اون کیک رو هم در اختیار داره.
نتیجه : کیک نفر اول همیشه یکدست و خوشمزه نمیشه؛ در حالیکه کیکی که نفر دوم میپزه همیشه خوشمزه و یکدست خواهد بود.
نقل قول:
Design patterns are recurring solutions to software design problems you find again and again in real-world application development. Patterns are about design and interaction of objects, as well as providing a communication platform concerning elegant, reusable solutions to commonly encountered programming challenges. The Gang of Four (GoF) patterns are generally considered the foundation for all other patterns. They are categorized in three groups: Creational, Structural, and Behavioral.
بحث Design Pattern برای اولین بار در دنیای نرم افزار توسط GoF صورت گرفت.
درباره ی GoF :
http://www.research.ibm.com/designpa...es/9803af1.gif
یک گروه چهار نفره شامل :
- Gamma, Erich
- Richard Helm
- Ralph Johnson
- John Vlissides
ملقب به Gang of Four یا GoF هستند. این گروه در 21 اکتبر سال 1994 کتابی را تحت عنوان :
منتشر کردند. (این کتاب تا تاریخ آوریل 2007، سی و 6 بار تجدید چاپ شده است)
آنها در این کتاب 23 الگوی طراحی کلاسیک رو با زبانهای OO مطرح در آنزمان (++C و Smalltalk) برای اولین بار مورد بحث قرار دادند.
دسته بندی کلاسیک الگوها :
این 23 الگو طبق دسته بندی فرض شده توسط آنها (که هنوز هم رعایت میشود) در 3 گروه زیر جای گرفتند :
الگوی 1- Singleton Pattern
Singleton Pattern
این pattern در طبقه بندی الگوهای Creational جای دارد و هدف آن اینستکه :
میخواهیم تضمین کنیم که از یک کلاس تنها بتوان یک آبجکت (حالت ساده و متعارف سینگلتون) ایجاد کرد و همه ی درخواستها نیز تنها به همان یک آبجکت هدایت شوند و نیز بتوان یک دسترسی عمومی به آن داشت.
اولین قدم : سازنده ی کلاس را private میکنیم
چرا private ؟ - پاسخ : تا هیچکسی نتواند از کلاس آبجکت بسازد.
دومین قدم : یک فیلد استاتیک از نوع خود کلاس تعریف میکنیم.
چرا استاتیک : چون قرار است در یک متود استاتیک از آن استفاده کنیم.
چرا private : چون قرار است امکان دسترسی به این آبجکت از طریق یک متود یا پراپرتی صورت گیرد و دسترسی مستقیم مطلوب نیست.
سومین قدم : ایجاد یک پراپرتی یا متود public و استاتیک که فیلد را برمیگرداند.
چرا public ؟ چون میخواهیم از همه جا قابل دسترسی باشد.
چرا استاتیک ؟ چون آبجکتی از کلاس ندارم و ناچارا باید دسترسی به این متود یا پراپرتی در سطح کلاس باشد.
پس تا اینجا داریم :
public sealed class Singleton
{
// Private Constructor
Singleton() { }
// Private object instantiated with private constructor
static readonly Singleton instance = new Singleton();
// Public static property to get the object
public static Singleton UniqueInstance
{
get { return instance; }
}
}
معمولا بهتر است این پیاده سازی بصورت lazy instantiation باشد (یعنی تا قبل از اولین invoking آبجکت مقداردهی اولیه نشود) :
public class Singleton
{
// Private constructor
Singleton() { }
// Nested class for lazy instantiation
class SingletonCreator
{
static SingletonCreator() { }
// Private object instantiated with private constructor
internal static readonly
Singleton uniqueInstance = new Singleton();
}
// Public static property to get the object
public static Singleton UniqueInstance
{
get { return SingletonCreator.uniqueInstance; }
}
}
این الگو به شدت در طراحیهای مختلف و الگوهای دیگر (مانند : Abstract Factory, Façade , ...) مورد استفاده دارد.
کدها بنقل از کتاب : http://www.oreilly.com/catalog/9780596527730
سایر منابع :
http://en.wikipedia.org/wiki/Singleton_pattern
http://www.dofactory.com/Patterns/PatternSingleton.aspx
الگوی 2 - Decorator Pattern
Decorator Pattern
این pattern در طبقه بندی الگوهای Structural جای دارد و هدف از آن :
امکان افزودن قابلیتها ( = تزئینات) جدید به یک آبجکت بصورت داینامیک و در زمان اجرا است.
این امکان بوسیله ی افزودن یک کلاس جدید (decorator) ممکن میشود که کلاس اصلی را wrap میکند. این wrapping معمولا با پاس دادن آبجکت اصلی بعنوان یک پارامتر به constructor decorator انجام میشود.
Decorator قابلیتهای جدید را در آبجکت پیاده سازی میکند و باید همان اینترفیسی را که کلاس اصلی پیاده سازی میکند، پیاده سازی کند.
در زمان اجرا میتوان به یک آبجکت هم decorator افزود و هم کاست بدون آنکه مصرف کننده متوجه تغییرات گردد.
Decorating در واقع بعنوان روش جایگزین subclassing (با انعطاف بیشتر) جهت توسعه قابلیتهاست با این تفاوت که :- Subclassing رفتارهای جدیدی را در زمان کامپایل(compile-time) اضافه میکند در حالیکه decorating میتونه رفتارهای جدیدی را در زمان اجرا(runtime) اضافه نماید.
- با decorating میتوانیم یک قابلیت را تنها به یک آبجکت خاص از یک کلاس بدهیم بدون آنکه سایر آبجکتهای آن کلاس تغییر کنند.
گاه در خیلی از مسایل بظاهر مشکل که صدها کلاس مشتق شده با روابطی پیچیده دارند؛ با پیاده سازی این الگو به یک طراحی آسان و خوانا خواهیم رسید.
یک مثال :
http://www.codeproject.com/KB/archit...Decorator.aspx
منابع :
http://www.dofactory.com/Patterns/PatternDecorator.aspx
http://www.informit.com/articles/article.aspx?p=31350
http://en.wikipedia.org/wiki/Decorator_pattern
یک مثال از decorator pattern
لینک زیر یک مثال واقعی و بسیار مفید از این الگو است (فصل سوم کتاب head first که بصورت رایگان عرضه میشود)
پیشنهاد میکنم حتما دانلود و مشاهده کنید :
http://www.oreilly.com/catalog/hfdes...apter/ch03.pdf
الگوی 3 - Command Pattern
یکی از الگوهای دسته ی behavorial است که به کمک آن (هدف) :
میتوان یک عملیات را در قالب یک آبجکت Encapsulate کرد؛ لذا از آن میتوان در اموری مانند :
پارامتری کردن کلاینتها با درخواستهای متفاوت،
ثبت و log کردن درخواستها،
عملیات برگشت پذیر (Undoable)
و ... استفاده کرد.
Command (Command)
- declares an interface for executing an operation
ConcreteCommand (CalculatorCommand)
- defines a binding between a Receiver object and an action
- implements Execute by invoking the corresponding operation(s) on Receiver
Client (CommandApp)
- creates a ConcreteCommand object and sets its receiver
Invoker (User)
- asks the command to carry out the request
Receiver (Calculator)
- knows how to perform the operations associated with carrying out the request.
یکی از کاربردهای دنیای واقعی برای این الگو گزینه های Undo و Redo موجود در تمامی محیطهای ویرایشگر میباشد.
از دیگر مثالهای واقعی این الگو میتوان به مورد ذخیره ی ماکروها (یکسری عملیات متوالی) در مجموعه ی آفیس اشاره کرد (همانطور که میدانید کاربر میتواند یکسری از کارهای پشت سر هم و تکراری خود را در قالب یک ماکرو ذخیره نماید و سپس با اجرای ماکرو تمامی آن کارها پشت سر هم اجرا خواهند شد)
یک مثال از سایت DoFactory را در زیر مشاهده میکنید
در این مثال ما یک ماشین حساب با تعداد نامتناهی عملیات Undo و Redo خواهیم داشت :
using System;
using System.Collections;
namespace DoFactory.GangOfFour.Command.RealWorld
{
// MainApp test application
class MainApp
{
static void Main()
{
// Create user and let her compute
User user = new User();
user.Compute('+', 100);
user.Compute('-', 50);
user.Compute('*', 10);
user.Compute('/', 2);
// Undo 4 commands
user.Undo(4);
// Redo 3 commands
user.Redo(3);
// Wait for user
Console.Read();
}
}
// "Command"
abstract class Command
{
public abstract void Execute();
public abstract void UnExecute();
}
// "ConcreteCommand"
class CalculatorCommand : Command
{
char @operator;
int operand;
Calculator calculator;
// Constructor
public CalculatorCommand(Calculator calculator,
char @operator, int operand)
{
this.calculator = calculator;
this.@operator = @operator;
this.operand = operand;
}
public char Operator
{
set{ @operator = value; }
}
public int Operand
{
set{ operand = value; }
}
public override void Execute()
{
calculator.Operation(@operator, operand);
}
public override void UnExecute()
{
calculator.Operation(Undo(@operator), operand);
}
// Private helper function
private char Undo(char @operator)
{
char undo;
switch(@operator)
{
case '+': undo = '-'; break;
case '-': undo = '+'; break;
case '*': undo = '/'; break;
case '/': undo = '*'; break;
default : undo = ' '; break;
}
return undo;
}
}
// "Receiver"
class Calculator
{
private int curr = 0;
public void Operation(char @operator, int operand)
{
switch(@operator)
{
case '+': curr += operand; break;
case '-': curr -= operand; break;
case '*': curr *= operand; break;
case '/': curr /= operand; break;
}
Console.WriteLine(
"Current value = {0,3} (following {1} {2})",
curr, @operator, operand);
}
}
// "Invoker"
class User
{
// Initializers
private Calculator calculator = new Calculator();
private ArrayList commands = new ArrayList();
private int current = 0;
public void Redo(int levels)
{
Console.WriteLine("\n---- Redo {0} levels ", levels);
// Perform redo operations
for (int i = 0; i < levels; i++)
{
if (current < commands.Count - 1)
{
Command command = commands[current++] as Command;
command.Execute();
}
}
}
public void Undo(int levels)
{
Console.WriteLine("\n---- Undo {0} levels ", levels);
// Perform undo operations
for (int i = 0; i < levels; i++)
{
if (current > 0)
{
Command command = commands[--current] as Command;
command.UnExecute();
}
}
}
public void Compute(char @operator, int operand)
{
// Create command operation and execute it
Command command = new CalculatorCommand(
calculator, @operator, operand);
command.Execute();
// Add command to undo list
commands.Add(command);
current++;
}
}
}
خروجی برنامه :
نقل قول:
Current value = 100 (following + 100)
Current value = 50 (following - 50)
Current value = 500 (following * 10)
Current value = 250 (following / 2)
---- Undo 4 levels
Current value = 500 (following * 2)
Current value = 50 (following / 10)
Current value = 100 (following + 50)
Current value = 0 (following - 100)
---- Redo 3 levels
Current value = 100 (following + 100)
Current value = 50 (following - 50)
Current value = 500 (following * 10)
این الگو سر فرصت کاملتر خواهد شد...
منابع :
http://en.wikipedia.org/wiki/Command_pattern
http://www.dofactory.com/Patterns/PatternCommand.aspx
http://www.vico.org/pages/PatronsDis...ern%20Command/
http://www.codeproject.com/KB/books/DesignPatterns.aspx
الگوی 4 - Observer Pattern
یکی دیگر از الگوهای رفتاری ست که هدف از آن :
یک رابطه ی یک به چند بین آبجکتهاست که زمانی که آن یک آبجکت تغییر کرد سایر آبجکتهای مرتبط با آن بلافاصله متوجه شده و خود را بروز کنند.
البته در دات نت این الگو بصورت درونکار و به کمک event و delegate قابل پیاده سازی است.
دوستان بحث مفصل در مورد این دو الگوی اخیر را بعدا خواهیم داشت. از اونجا که دیشب به دلایلی نتونستم بخوابم الان زیاد نمیتونم برای نوشتن توضیحات متمرکز بشم.
فعلا وقت بخیر...
منابع :
http://en.wikipedia.org/wiki/Observer_pattern
http://www.dofactory.com/Patterns/PatternObserver.aspx
http://msdn.microsoft.com/library/de...erverInNET.asp
http://www.codeproject.com/kb/archit...ilKumarKS.aspx
الگوی 5 - Prototype Pattern
Prototype Pattern
http://upload.wikimedia.org/wikipedi...ern_ZP.svg.png
یکی از الگوهای Creational است که هدف از آن :
مشابهسازی کلاسی موجود به جای ایجاد وهلهای از آن (هنگامی که ایجاد نمونهای دیگر بر روی کارایی برنامه تاثیر منفی داشته باشد) .
به عنوان مثال در موارد زیر کاربرد دارد:
- زمانی که نیاز است از دیتابیسی حجیم چندین تراکنش صورت گیرد تا پاسخ مسالهای پیدا شود. وقتی این پاسخ بدست آمد شاید بخواهید عملیاتی بر روی آنها انجام شود (بدون نیاز به انجاک تراکنش جدید) در این حالت داشتن و یا تهیه یک نوع کپی از دادههای حاصل بسیار مطلوب است.
- اطلاعات شما در فایلی وجود دارد در هنگام ساخت نمونهای از کلاس، این اطلاعات از فایل خوانده شده (رکورد به رکورد) و داخل کلاس افزوده میشود. برای انجام هر عملیات ممکن است نیاز به نمونهای از این اطلاعات باشد و ساخت نمونهای جدید و لود کردن اطلاعات فایل، سربار زیادی ایجاد میکند.
برای پیادهسازی این الگو :
یک کلاس پایه abstract ایجاد میکنیم که متد ()clone را تعریف میکند. هر کلاسی که از کلاسه پایه مشتق شود متد ()clone را پیادهسازی میکند.
هر زمان که نیاز به کپی از این کلاس بود به جای نوشتن new متد ()Clone فراخوانده میشود.
مثال :
public enum RecordType
{
Car,
Person
}
/// <summary>
/// Record is the Prototype
/// </summary>
public abstract class Record
{
public abstract Record Clone();
}
/// <summary>
/// PersonRecord is the Concrete Prototype
/// </summary>
public class PersonRecord : Record
{
string name;
int age;
public override Record Clone()
{
return (Record)this.MemberwiseClone(); // default shallow copy
}
}
/// <summary>
/// CarRecord is another Concrete Prototype
/// </summary>
public class CarRecord : Record
{
string carname;
Guid id;
public override Record Clone()
{
CarRecord clone = (CarRecord)this.MemberwiseClone(); // default shallow copy
clone.id = Guid.NewGuid(); // always generate new id
return clone;
}
}
/// <summary>
/// RecordFactory is the client
/// </summary>
public class RecordFactory
{
private static Dictionary<RecordType, Record> _prototypes =
new Dictionary<RecordType, Record>();
/// <summary>
/// Constructor
/// </summary>
public RecordFactory()
{
_prototypes.Add(RecordType.Car, new CarRecord());
_prototypes.Add(RecordType.Person, new PersonRecord());
}
/// <summary>
/// The Factory method
/// </summary>
public Record CreateRecord(RecordType type)
{
return _prototypes[type].Clone();
}
}
منابع :
http://en.wikipedia.org/wiki/Prototype_pattern
کتاب الگوهای طراحی آقای نصیری
http://www.dofactory.com/Patterns/PatternPrototype.aspx
نمونه کدی از CodeProject برای نمایش اتباطات صوتی از طریق شبکه با Prototype
پوستری جالب از Design Patternها
چند روز پیش که گذرم به سایت Oreilly افتاد پوستری جالب از Design Patternهای مختلف دیدم. طراحی جالبی داره و باعث یادآوری میشه:چشمک:
http://www.oreilly.com/catalog/cover...102143_cat.gif
Head First Design Patterns Poster
نقل قول: آشنایی با الگوهای طراحی - Design Pattern
براي Design Pattern، PDF وجود نداره تا به شه مثل يك جزو داشته باشيم. آخه من تازه كار هستم. اين مطالب خوب واسه من يه كم سنگينه و درست نميفهمم.
نقل قول: آشنایی با الگوهای طراحی - Design Pattern
تنها منبع فارسی که من دیده ام کتاب جناب وحید نصیری بود
http://www.adinebook.com/images-1/im...jpg?1189718889
1 ضمیمه
نقل قول: آشنایی با الگوهای طراحی - Design Pattern
جمع بندي حرفهاي فوق و برخي اطلاعات از منابع ديگر را مي توانيد در اين فايل بخوانيد.
نقل قول: آشنایی با الگوهای طراحی - Design Pattern
اینم PDf خوبیه .
http://www.4shared.com/file/11530711...in_CSharp.html
هر کی مایله 10 صفحه به 10 صفحه ترجمه بشه . تا یک مرجع خوب فارسی برای این موضوع باشه .
نقل قول: آشنایی با الگوهای طراحی - Design Pattern
دوستان اگر کسی میتونه pattern Composite را توضیح بده
ممنون
نقل قول: آشنایی با الگوهای طراحی - Design Pattern
سلام
میشه Bridge Pattern هم توضیح بدین؟
نقل قول: آشنایی با الگوهای طراحی - Design Pattern
سلام كسي در مورد repository pattern مطلبي داره ممنون ميشم ...
نقل قول: آشنایی با الگوهای طراحی - Design Pattern
نقل قول:
نوشته شده توسط
Coward
دوستان اگر کسی میتونه pattern Composite را توضیح بده
ممنون
http://www.oodesign.com/composite-pattern.html
نقل قول: آشنایی با الگوهای طراحی - Design Pattern
نقل قول:
نوشته شده توسط
dr_jacky_2005
سلام
میشه Bridge Pattern هم توضیح بدین؟
http://www.oodesign.com/bridge-pattern.html
نقل قول: آشنایی با الگوهای طراحی - Design Pattern
نقل قول:
نوشته شده توسط
omid195
سلام كسي در مورد repository pattern مطلبي داره ممنون ميشم ...
http://giorgiosironi.blogspot.com/20...y-pattern.html
نقل قول: آشنایی با الگوهای طراحی - Design Pattern
salam az matlabe mofidetoon bi nahaiat sepas gozaram
man alan b moshkeli jedi barkhord kardam k az shoma mikham komakam konin va anham farghe beine factory method ba abstract factory ast?
age emkan dare dar ghalebe yek mesal bande ra rahnamaee konin
khaili fori
ba tashakor
نقل قول: آشنایی با الگوهای طراحی - Design Pattern
بسم الله الرحمن الرحیم
با سلام
در حال حاضر الگوهای طراحی بسیارند؛ طبیعی ست که هر کدامشون مورد استفاده خاصی دارد. ولی با تمام این تفاسیر ماحصل این ها کدام ها هستند که در پروژه های واقعی ازشون استفاده کنیم.
با سپاس فراوان
نقل قول: آشنایی با الگوهای طراحی - Design Pattern
سلام
تقدیم به همه دوستان و عزیزان
الگوهای طراحی
1 |
مقدمه بر الگو های طراحی (Design Pattern ) |
رحیم لطفی |
دانلود |
2 |
مقدمه بر الگو های طراحی (Design Pattern ) |
رحیم لطفی |
دانلود |
3 |
مقدمه بر الگو های طراحی (Design Pattern ) |
رحیم لطفی |
دانلود |
4 |
مقدمه بر الگو های طراحی (Design Pattern ) |
رحیم لطفی |
دانلود |
5 |
الگو های طراحی (Design Pattern SingleTon ) |
رحیم لطفی |
دانلود |
6 |
الگو های طراحی (Design Pattern Multiton ) |
رحیم لطفی |
دانلود |
7 |
الگو های طراحی (Design Pattern Pool ) |
رحیم لطفی |
دانلود |
8 |
الگو های طراحی (Design Pattern ) |
رحیم لطفی |
دانلود |
9 |
الگو های طراحی (Design Pattern Builder) |
رحیم لطفی |
دانلود |
10 |
الگو های طراحی (Design Pattern Prototype ) |
رحیم لطفی |
دانلود |
11 |
الگو های طراحی (Design Pattern Responsability ) |
رحیم لطفی |
دانلود |
12 |
الگو های طراحی (Design Pattern Command) |
رحیم لطفی |
دانلود |
13 |
الگو های طراحی (Design Pattern Command2 ) |
رحیم لطفی |
دانلود |
14 |
الگو های طراحی (Design Pattern interpreter ) |
رحیم لطفی |
دانلود |
15 |
الگو های طراحی (Design Pattern Mediator ) |
رحیم لطفی |
دانلود |
16 |
الگو های طراحی (Design Pattern Mediator ) |
رحیم لطفی |
دانلود |
17 |
الگو های طراحی (Design Pattern Visitor ) |
رحیم لطفی |
دانلود |
18 |
الگو های طراحی (Design Pattern Visitor ) |
رحیم لطفی |
دانلود |
19 |
ر الگو های طراحی (Design Pattern Adapter ) |
رحیم لطفی |
دانلود |
20 |
الگو های طراحی (Design Pattern Composite ) |
رحیم لطفی |
دانلود |
21 |
الگو های طراحی (Design Pattern Decorator ) |
رحیم لطفی |
دانلود |
22 |
الگو های طراحی (Design Pattern Facade ) |
رحیم لطفی |
دانلود |
23 |
الگو های طراحی (Design Pattern FlyWeight) |
رحیم لطفی |
دانلود |
24 |
الگو های طراحی (Design Pattern Proxy) |
رحیم لطفی |
دانلود |
25 |
الگو های طراحی (Design Pattern Proxy2 ) |
رحیم لطفی |
دانلود |
26 |
الگو های طراحی (Design Pattern Observer) |
رحیم لطفی |
دانلود |
27 |
الگو های طراحی (Design Pattern Observer2 ) |
رحیم لطفی |
دانلود |
28 |
الگو های طراحی (Design Pattern Memento ) |
رحیم لطفی |
دانلود |
29 |
الگو های طراحی (Design Pattern State ) |
رحیم لطفی |
دانلود |
30 |
مقدمه بر الگو های طراحی (Design Pattern State2 ) |
رحیم لطفی |
دانلود |
31 |
الگو های طراحی (Design Pattern Iterator ) |
رحیم لطفی |
دانلود |
32 |
الگو های طراحی (Design Pattern Startegy ) |
رحیم لطفی |
دانلود |
33 |
الگو های طراحی (Design Pattern Template ) |
رحیم لطفی |
دانلود |
نقل قول: آشنایی با الگوهای طراحی - Design Pattern
سلام. بسیار مطلب مفیدی بود. ممنون از همه .
نقل قول: آشنایی با الگوهای طراحی - Design Pattern
با تشکر از شما ...
اگه برای هر کدام از اصول و الگو های طراحی یک نمونه کامل هم گذاشته بشه خیلی خوب میشه(هر چند نمونه های سطح بالا در اینترنت پیدا مشه ولی واسه یادگیری زیاد مناسب نیستند)
نقل قول: آشنایی با الگوهای طراحی - Design Pattern
سلام وقت بخير
ضمن سپاس فراوان از جناب رحيم لطفي
اگر لطف بكنند لينك رديف 8 را اصلاح نمايند سپاس گزارم.8 |
الگو های طراحی (Design Pattern ) |
رحیم لطفی |
دانلود |
نقل قول: آشنایی با الگوهای طراحی - Design Pattern
با سلام ممنون از لطفتون. ممکنه لینک دانلودها رو دوباره بررسی کنید بسیاری از اونها وجود ندارند. با تشکر
نقل قول: آشنایی با الگوهای طراحی - Design Pattern
باسپاس از لطفتون
لینک دانلودها از شماره 7 به بعد مشکل دارن ممنون میشم کنترل کنید
نقل قول: آشنایی با الگوهای طراحی - Design Pattern
آیا کسی سعی کرده تا به حال الگوهای طراحی را به صورت یک مولفه دربیاره. منظورم این هست که کتابخانه ای از الگوهای طراحی داشته باشیم و بتونیم به راحتی از آنها در برنامه های دات نت استفاده کرد؟ من تو اینترنت خیلی جستجو کردم و متوجه شدم که فقط به معرفی الگوها و نحوه استفاده از آنها اشاره شده است. البته قصد دارم چند الگویی را به صورت مولفه در بیارم و نیاز دارم کسی تو این راه کمکم کنه. کسی که تسلط کافی به سی شارپ داشته باشه. اگر کسی از دوستان علاقه مند به انجام این کار هست لطفا با بنده تماس بگیره. یا اگر کسی همچین کتابخانه رو سراغ داره لطفا لینک بده برای مطالعه یا دانلود. خیلی ممنون