On Fri, Nov 27, 2015 at 7:44 PM, luciano de souza <luchya...@gmail.com> wrote: > If I need to do "TAnimalFactory.create(atDog) as Tdog", perhaps, it > would be better not to use a factory, doing simply "TDog.create".
You're right, use simply TDog.Create. Why do you have a factory to create different types of animals (classes)? Doesn't make sense. If you need a factory, you should use a factory for dogs, another for cats and so on. Another tip: Factories resolve some problems but there is a cost. The factory will creates your instance (object) but it know only one constructor, ie, the base class constructor. Objects should be immutable at first place, only if you have a good reason for don't use immutability. So, if they should be immutable, you have only the constructor to instantiate your object, passing arguments for it. If you have a constructor without arguments (using a base class for example), you won't pass arguments to instantiate your classe properly. Another tip: use interfaces, not inheritance. Inheritance is evil. You always will have problems using inheritance. Instead, use small objects with few methods (2-5) to resolve just one problem. You don't need inheritance for that. Your code will be more simpler and customizable. Decorator Pattern is more powerful than inheritance. Read about it. Best regards, Marcos Douglas _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal