Factory Patterns (قسمت اول)

مفهوم Factory (کارخانه)، دقیقا از معنی لغوی آن مشخص است. کارخانه مکانی است که در آن کالاها و محصولاتی تولید می شود. و در بحث الگوهای طراحی، یک Factory کلاسی است که نمونه های از کلاس های دیگر را با توجه به پارامترهای که برای آن ارسال می شود، ایجاد می کند.

برای ایجاد یک ذهنیت در خودتان می توانید تصور کنید که ما یک فروشگاه پوشاک داریم هر وقت که فروشگاه به لباس خاصی نیاز داشته باشید. اسامی آن را به تولید کننده(Factory) ارسال می کند و تولید کننده با توجه به اسامی ارسال شده آن لباس ها را تولید کرده و به فروشگاه ارسال می کند. در این مثال تولید کننده همان کلاس Factory ما است که با توجه به پارامترهای ارسال شده (لیست پوشاک مورد نظر فروشگاه) لباس مورد نظر (شی موزد نظر) را تولید می کند و به مشتری ارسال می کند.

نمونه کد اول در VB.NET

‘Class Shirt

Public Class Shirt

Protected _Color As String

Protected _Size As String

Public ReadOnly Property Color()

Get

Return _Color

End Get

End Property

Public ReadOnly Property Size()

Get

Return _Size

End Get

End Property

End Class

‘Class Shrit_A

Public Class Shrit_A

Inherits Shirt

Public Sub New()

Me._Color = “Blue”

Me._Size = “XL”

End Sub

End Class

‘Class Shrit_B

Public Class Shirt_B

Inherits Shirt

Public Sub New()

Me._Color = “Red”

Me._Size = “M”

End Sub

End Class

‘Class Factory

Public Class Factory

Public Function GetShirt(ByVal Type As String) As Shirt

If Type = “A” Then

Return New Shrit_A()

Else

Return New Shirt_B()

End If

End Function

End Class

‘Class Store

Public Class Store

Private _OrderType As String

Public Property OrderType()

Get

Return _OrderType

End Get

Set(ByVal value)

_OrderType = value

End Set

End Property

Public Function Order() As Shirt

Dim Ins1 As New Factory

Dim Ins2 As Shirt = Ins1.GetShirt(_OrderType)

Return Ins2

End Function

End Class

نحوه استفاده

Private Sub Cmd_Order_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

Dim Ins1 As New Store

Dim INs2 As New Shirt

Ins1.OrderType = “A”

INs2 = Ins1.Order()

End Sub

  1. محبوبي
    ۶ آذر ۱۳۸۵ در ۰۷:۵۵ | #1

    سلام مطالب تون خیلی جالبه ، در مورد الگوهای دیگر اگه ممکنه بنویسید.ممنون

  1. بدون بازتاب