Re: Factory Class Question
From: Jay B. Harlow [MVP - Outlook] (Jay_Harlow_MVP_at_msn.com)
Date: 12/06/04
- Next message: moondaddy: "Re: How to share an Enum accross DLLs"
- Previous message: Bob O`Bob: "Re: where is the Key in TreeView.NET?"
- In reply to: Jason MacKenzie: "Re: Factory Class Question"
- Next in thread: Jason MacKenzie: "Re: Factory Class Question"
- Reply: Jason MacKenzie: "Re: Factory Class Question"
- Messages sorted by: [ date ] [ thread ]
Date: Mon, 6 Dec 2004 14:13:38 -0600
Jason,
Seeing as you have parameterized constructors, the "easiest" way may be to
move EmployeeFactory, Employee, Facilty1Employee, and Facilty2Employee all
to their own class library, then make the constructors of Employee,
Facilty1Employee, and Facilty2Employee as Friend. Which means that only that
assembly will be able to instantiate the classes. I would make
EmployeeFactory a not inheritable class with a private constructor, which
prevents others from inheriting from it or creating an instance of it.
I normally do not create both a EmployeeFactory class and Employee class,
instead I put the factory method as a shared member of Empoyee.
Hope this helps
Jay
"Jason MacKenzie" <jmackenzie_nospamallowed@formet.com> wrote in message
news:%23dM3a382EHA.3840@tk2msftngp13.phx.gbl...
> Jay - thanks for the response.
>
> Here is what I have right now:
>
> I have a base class called Employee
>
> I have 2 derived classes based on Employee called Facilty1_Employee and
> Facilty2_Employee
>
> I have a factory class that has a function that returns Employee and will
> instatiate Facility1 or 2 depending on a setting in the registry.
>
> Facility2_Employee has an overloaded constructor which means I can't make
> it private (as far as I know).
>
> Facilty1_employee takes one argument in its constructor as well which
> means I can't make that private.
>
> Should I be setting properties instead of using passing arguments to the
> constructors to accomplish what I'm trying to do?
>
> Thanks a million,
>
> Jason MacKenzie
>
>
> "Jay B. Harlow [MVP - Outlook]" <Jay_Harlow_MVP@msn.com> wrote in message
> news:ON73Sq82EHA.1292@TK2MSFTNGP10.phx.gbl...
>> Jason,
>> The "easiest" way is to make the constructor private which will only
>> allow the class itself to create an instance.
>>
>> This unfortunately will not prevent creating an instance via reflection &
>> Activator.CreateInstance... Using Activator.CreateInstance to create an
>> instance of a class with a private constructor is rare, however it is
>> possible.
>>
>> Hope this helps
>> Jay
>>
>> "Jason MacKenzie" <jmackenzie_nospamallowed@formet.com> wrote in message
>> news:e$8hiR82EHA.1192@tk2msftngp13.phx.gbl...
>>> Is there a way to prevent classes from being instantiated by methods
>>> other than my factory pattern?
>>>
>>> I have a couple of classes and want to force the factory class to be
>>> used as the "entry point".
>>>
>>> Any help is appreciated,
>>>
>>> Jason MacKenzie
>>>
>>
>>
>
>
- Next message: moondaddy: "Re: How to share an Enum accross DLLs"
- Previous message: Bob O`Bob: "Re: where is the Key in TreeView.NET?"
- In reply to: Jason MacKenzie: "Re: Factory Class Question"
- Next in thread: Jason MacKenzie: "Re: Factory Class Question"
- Reply: Jason MacKenzie: "Re: Factory Class Question"
- Messages sorted by: [ date ] [ thread ]
Relevant Pages
|