VBA ¤È Java ¤Î¥ª¥Ö¥¸¥§¥¯¥È»Ø¸þ¥×¥í¥°¥é¥ß¥ó¥°

Top > Excel VBA ¤Ç¥Ç¥¶¥¤¥ó¥Ñ¥¿¡¼¥ó > FactoryMethod¥Ñ¥¿¡¼¥ó

FactoryMethod¥Ñ¥¿¡¼¥ó


FactoryMethod¥Ñ¥¿¡¼¥ó¤Î¥µ¥ó¥×¥ë¥×¥í¥°¥é¥à¤òExcelVBA¤Çµ­½Ò¤¹¤ë¤È°Ê²¼¤Î
¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£¥â¥¸¥å¡¼¥ë¤´¤È¤Ë¥×¥í¥°¥é¥à¤ò¼¨¤·¤Þ¤¹¡£
ɸ½à¥â¥¸¥å¡¼¥ë¡§modIObject
Option Explicit

'¥³¥ó¥¹¥È¥é¥¯¥¿
Public Function init2(pobjConcrete As clsIObject) As clsIObject
    Dim obj As Object
    Set obj = New clsIObject
    'Ãê¾Ý¥á¥½¥Ã¥É¤Î¼ÂºÝ¤Î½èÍý¤¬µ­½Ò¤µ¤ì¤Æ¤¤¤ë¥µ¥Ö¥¯¥é¥¹¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤ò°ú¿ô¤ÇÅϤ¹
    obj.init2 pobjConcrete
    Set init2 = obj
End Function
¥¯¥é¥¹¥â¥¸¥å¡¼¥ë¡§clsIObject
Option Explicit
'Ãê¾Ý¥á¥½¥Ã¥É¤Î¼ÂºÝ¤Î½èÍý¤¬µ­½Ò¤µ¤ì¤Æ¤¤¤ë¥µ¥Ö¥¯¥é¥¹¤Î¥¤¥ó¥¹¥¿¥ó¥¹
Private mobjConcrete As clsIObject

'¥³¥ó¥¹¥È¥é¥¯¥¿
Public Sub init2(pobjConcrete As clsIObject)
    Set mobjConcrete = pobjConcrete
End Sub

Public Property Get concrete() As clsIObject
    Set concrete = mobjConcrete
End Property

ɸ½à¥â¥¸¥å¡¼¥ë¡§modIFactory
Option Explicit

'¥³¥ó¥¹¥È¥é¥¯¥¿
Public Function init2(pobjConcrete As clsIObject) As clsIFactory
    Dim obj As clsIFactory
    Set obj = New clsIFactory
    obj.init2 pobjConcrete
    Set init2 = obj
End Function
¥¯¥é¥¹¥â¥¸¥å¡¼¥ë¡§clsIFactory
Option Explicit
'¥¹¡¼¥Ñ¡¼¥¯¥é¥¹¤Î¾ðÊó
Implements clsIObject
Private mobjSuper As clsIObject

'¥³¥ó¥¹¥È¥é¥¯¥¿
Public Sub init2(pobjConcrete As clsIObject)
    Set mobjSuper = modIObject.init2(pobjConcrete)
End Sub

Public Property Get concrete() As clsIObject
    Set concrete = mobjSuper.concrete
End Property

Public Function create(pstrOwner As String) As clsIProduct
    Dim objConcrete As clsIFactory
    Dim objRtn As clsIProduct
    Set objConcrete = Me.concrete
    Set objRtn = objConcrete.createProduct(pstrOwner)
    objConcrete.registerProduct objRtn
    Set create = objRtn
End Function

Public Function createProduct(pstrOwner As String) As clsIProduct
'
End Function

Public Sub registerProduct(pobjProduct As clsIProduct)
'
End Sub

'----------------------------------------
' clsIObject ¤Î¥¤¥ó¥¿¡¼¥Õ¥§¥¤¥¹
'----------------------------------------
Private Sub clsIObject_init2(pobjConcrete As clsIObject)
'
End Sub

Private Property Get clsIObject_concrete() As clsIObject
    Set clsIObject_concrete = Me.concrete
End Property

¥¯¥é¥¹¥â¥¸¥å¡¼¥ë¡§clsIProduct
Option Explicit

Public Sub use()
'
End Sub

ɸ½à¥â¥¸¥å¡¼¥ë¡§modCIDCardFactory
Option Explicit

'¥³¥ó¥¹¥È¥é¥¯¥¿
Public Function init1() As clsCIDCardFactory
    Dim obj As clsCIDCardFactory
    Set obj = New clsCIDCardFactory
    obj.init1
    Set init1 = obj
End Function
¥¯¥é¥¹¥â¥¸¥å¡¼¥ë¡§clsCIDCardFactory
Option Explicit
'¥¹¡¼¥Ñ¡¼¥¯¥é¥¹¤Î¾ðÊó
Implements clsIObject
Implements clsIFactory
Private mobjSuper As clsIFactory
'¥×¥í¥Ñ¥Æ¥£¾ðÊó
'ArrayList ¤ò Collection ¤ÇÂåÍÑ
Private mcolOwners As Collection

'¥³¥ó¥¹¥È¥é¥¯¥¿
Public Sub init1()
'    '¥¹¡¼¥Ñ¡¼¥¯¥é¥¹¤Î¥³¥ó¥¹¥È¥é¥¯¥¿¤Î¸Æ¤Ó½Ð¤·
    Set mobjSuper = modIFactory.init2(Me)
    Set mcolOwners = New Collection
End Sub

Public Property Get concrete() As clsIObject
    Set concrete = mobjSuper.concrete
End Property

Public Function create(owner As String) As clsIProduct
    mobjSuper.create owner
End Function

Public Property Get owners() As Collection
    Set owners = mcolOwners
End Property

'----------------------------------------
' clsIFactory ¤Î¥¤¥ó¥¿¡¼¥Õ¥§¥¤¥¹
'----------------------------------------
Private Sub clsIFactory_init2(pobjConcrete As clsIObject)
On Error GoTo error_proc
    Err.Raise 1, , "¥¹¡¼¥Ñ¡¼¥¯¥é¥¹¤Î¥³¥ó¥¹¥È¥é¥¯¥¿¤Ï¼Â¹Ô¤Ç¤­¤Þ¤»¤ó¡£"
    Exit Sub
error_proc:
    Debug.Print "clsCIDCardFactory.clsIFactory_init2:" & Err.Number & ":" & Err.Description
    Err.Raise Err.Number, , Err.Description
End Sub

Private Property Get clsIFactory_concrete() As clsIObject
    Set clsIFactory_concrete = Me.concrete
End Property

Private Function clsIFactory_create(owner As String) As clsIProduct
    Set clsIFactory_create = mobjSuper.create(owner)
End Function

Private Function clsIFactory_createProduct(owner As String) As clsIProduct
    Set clsIFactory_createProduct = modCIDCard.init2(owner)
End Function

Private Sub clsIFactory_registerProduct(product As clsIProduct)
    Dim obj As clsCIDCard
    Set obj = product
    mcolOwners.Add obj.owner
End Sub

'----------------------------------------
' clsIObject ¤Î¥¤¥ó¥¿¡¼¥Õ¥§¥¤¥¹
'----------------------------------------
Private Sub clsIObject_init2(pobjConcrete As clsIObject)
On Error GoTo error_proc
    Err.Raise 1, , "¥¹¡¼¥Ñ¡¼¥¯¥é¥¹¤Î¥³¥ó¥¹¥È¥é¥¯¥¿¤Ï¼Â¹Ô¤Ç¤­¤Þ¤»¤ó¡£"
    Exit Sub
error_proc:
    Debug.Print "clsCIDCardFactory.clsIObject_init2:" & Err.Number & ":" & Err.Description
    Err.Raise Err.Number, , Err.Description
End Sub

Private Property Get clsIObject_concrete() As clsIObject
    Set clsIObject_concrete = Me.concrete
End Property

ɸ½à¥â¥¸¥å¡¼¥ë¡§modCIDCard
Option Explicit

'¥³¥ó¥¹¥È¥é¥¯¥¿
Public Function init2(pstrOwner As String) As clsCIDCard
    Dim obj As clsCIDCard
    Set obj = New clsCIDCard
    obj.init2 pstrOwner
    Set init2 = obj
End Function
¥¯¥é¥¹¥â¥¸¥å¡¼¥ë¡§clsCIDCard
Option Explicit
'¥¹¡¼¥Ñ¡¼¥¯¥é¥¹¤Î¾ðÊó
Implements clsIProduct
'¥×¥í¥Ñ¥Æ¥£¾ðÊó
Private mstrOwner As String

'¥³¥ó¥¹¥È¥é¥¯¥¿
Public Sub init2(pstrOwner As String)
    Debug.Print pstrOwner & "¤Î¥«¡¼¥É¤òºî¤ê¤Þ¤¹¡£"
    mstrOwner = pstrOwner
End Sub

Public Property Get owner() As String
    owner = mstrOwner
End Property

'----------------------------------------
' clsIProduct ¤Î¥¤¥ó¥¿¡¼¥Õ¥§¥¤¥¹
'----------------------------------------
Private Sub clsIProduct_use()
    Debug.Print mstrOwner & "¤Î¥«¡¼¥É¤ò»È¤¤¤Þ¤¹¡£"
End Sub

ɸ½à¥â¥¸¥å¡¼¥ë¡§modCMain
Option Explicit

'¥á¥¤¥ó½èÍý£±
Sub main1()
    Dim factory As clsIFactory
    Dim card1 As clsIProduct
    Dim card2 As clsIProduct
    Dim card3 As clsIProduct

    Set factory = modCIDCardFactory.init1
    Set card1 = factory.create("·ë¾ë¹À")
    Set card2 = factory.create("¤È¤à¤é")
    Set card3 = factory.create("º´Æ£²Ö»Ò")

    card1.use
    card2.use
    card3.use

    Dim obj As clsCIDCardFactory
    Dim var As Variant
    Set obj = factory
    Debug.Print
    For Each var In obj.owners
        Debug.Print var
    Next
End Sub

Top > Excel VBA ¤Ç¥Ç¥¶¥¤¥ó¥Ñ¥¿¡¼¥ó > FactoryMethod¥Ñ¥¿¡¼¥ó

¤³¤Î¥Ú¡¼¥¸¤Ø¤Î¥³¥á¥ó¥È

6vk4xm Thanks for sharing, this is a fantastic blog.Much thanks again. Great.

0
Posted by tips about seo 2013ǯ12·î20Æü(¶â) 00:08:53 ÊÖ¿®

VBADP04 - VBA �� Java �Υ��֥������Ȼظ��ץ����ߥ� - Seesaa Wiki�ʥ������� for ���ޡ��ȥե��� モンクレール セール http://www.pslcbi.com/moncler2014.html

0
Posted by ãƒ¢ãƒ³ã‚¯ãƒ¬ãƒ¼ãƒ« セール 2013ǯ12·î09Æü(·î) 22:32:59 ÊÖ¿®

rTcykS <a href="http://mbmpyqeympjx.com/">mbmpyqeympjx</a>, [url=http://uraliejpsqqf.com/]uraliejpsqqf[/url], [link=http://sujejtbpfped.com/]sujejtbpfped[/link], http://hulxahncsefq.com/

0
Posted by iodfsvsdky 2013ǯ11·î19Æü(²Ð) 18:35:50 ÊÖ¿®

Fr2AWZ <a href="http://yyyazgyzswtd.com/">yyyazgyzswtd</a>, [url=http://jhgviwziumyv.com/]jhgviwziumyv[/url], [link=http://beykpzowntuy.com/]beykpzowntuy[/link], http://qirkymdqcyjj.com/

0
Posted by aouqujqqfww 2013ǯ11·î15Æü(¶â) 09:05:49 ÊÖ¿®

¥³¥á¥ó¥È¤ò¤«¤¯


¡Öhttp://¡×¤ò´Þ¤àÅê¹Æ¤Ï¶Ø»ß¤µ¤ì¤Æ¤¤¤Þ¤¹¡£

ÍøÍѵ¬Ìó¤ò¤´³Îǧ¤Î¤¦¤¨¤´µ­Æþ²¼¤µ¤¤

ÊÔ½¸¤Ë¤ÏID¤¬É¬ÍפǤ¹