Factory pattern in D

biozic via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Fri May 1 03:27:14 PDT 2015


On Friday, 1 May 2015 at 10:12:36 UTC, Chris wrote:
> On Friday, 1 May 2015 at 10:04:46 UTC, Namespace wrote:
>> How about this:
>>
>> ----
>> struct A {
>>  int x = 42;
>> }
>>
>> struct B {
>>  int x = 7;
>> }
>>
>> T factory(T)() {
>>  return T();
>> }
>>
>> void main()
>> {
>>  auto a = factory!(A);
>> }
>> ----
>
> That's what I was looking for, I just couldn't get it right. 
> Thanks.
>
> Rikki:
>
> I wanted to avoid classes and interfaces.

This might be a bit more useful:
---
struct A {
   int x = 42;
}

struct B {
   int x = 7;
}

auto factory(string type = "")() {
   static if (type == "A")
     return A();
   else static if (type == "B")
     return B();
   else
     return A();  // default
}

void main()
{
   auto a = factory!"A";
   auto b = factory!"B";
   auto x = factory;
}
---




More information about the Digitalmars-d-learn mailing list