Defination
Define an interface for creating an object, but let subclasses decide which class to instantiate. Lets a class defer instantiation to subclass. - Gof
Problem
Project has already been published to a DLL or dilivered to customer. We cannot change it.
Usage
Make one factory to each of the classes we need to instantiate.
In the client code, just use the factory class to instantiate class.
Sample Code
package FactoryMethod
{
public class User
{
public function User()
{
}
public function login()
{}
}
}
package FactoryMethod
{
public class CCTVUser extends User
{
public function CCTVUser()
{
super();
}
public override function login():Object
{
}
}
}
package FactoryMethod
{
public class CommonUser extends User
{
public function CommonUser()
{
super();
}
public override function login():Object
{}
}
}
package FactoryMethod
{
public class UserFactory
{
public function UserFactory()
{
}
public function create():User
{}
}
}
package FactoryMethod
{
public class CCTVUserFactory extends UserFactory
{
public function CCTVUserFactory()
{
super();
}
public override function create():User
{
return new CCTVUser();
}
}
}
package FactoryMethod
{
public class CommonUserFactory extends UserFactory
{
public function CommonUserFactory()
{
super();
}
public override function create():User
{
return new CommonUser();
}
}
}
package FactoryMethod
{
public class ClientCode
{
public function ClientCode()
{
}
private function cctvLogin():void
{
var cctvFactory:UserFactory = new CCTVUserFactory();
var cctvUser:User = cctvFactory.create();
cctvUser.login();
}
}
}