Factory Method

来源:互联网 发布:轩辕世界弑神进阶数据 编辑:程序博客网 时间:2024/06/07 00:56

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();
  }

 }
}

原创粉丝点击