--- /dev/null
+Option Explicit \r
+\r
+Dim g_SrcPath\r
+\r
+Class ClassA_vbs : Public FullPath : End Class\r
+Dim g_ClassA_vbs\r
+Set g_ClassA_vbs =_\r
+ new ClassA_vbs\r
+With g_ClassA_vbs\r
+ .FullPath = g_SrcPath\r
+End With\r
+\r
+\r
+Sub get_StaticObjects( InterfaceName, out_Obj )\r
+ If IsEmpty( InterfaceName ) or InterfaceName = "ClassI" Then\r
+ Set out_Obj = get_ClassA()\r
+ End If\r
+End Sub\r
+\r
+\r
+'-------------------------------------------------------------------------\r
+' ### <<<< [ClassA] Class >>>>\r
+'-------------------------------------------------------------------------\r
+Dim g_ClassA\r
+\r
+Function get_ClassA() '// has_interface_of ClassI\r
+ If IsEmpty( g_ClassA ) Then _\r
+ Set g_ClassA = new ClassA\r
+ Set get_ClassA = g_ClassA\r
+End Function\r
+\r
+\r
+Class ClassA '// has_interface_of ClassI\r
+ Public Property Get Name() : Name = TypeName(Me) : End Property\r
+ Public Property Get TrueName() : TrueName = TypeName(Me) : End Property\r
+ Public Sub Validate() : End Sub\r
+ '--- Name is factory pattern.\r
+\r
+ Public Property Get DefineInfo() : Set DefineInfo = g_ClassA_vbs : End Property\r
+\r
+ Public Value\r
+ Public Function Method1() : Method1 = "ClassA.Method1" : End Function\r
+End Class\r
+\r
+\r
+ \r