/*
* Created by sharpdevelop.
* User: Anson. Wu
* Date: 2007-4-5
* Time: 10: 55
*
* To change this template use tools | options | coding | edit standard headers.
*/
Using System;
Namespace Structural
{
Class Mainclass
{
Public Static Void Main ( String [] ARGs)
{
Product [] Product = New Product [ 2 ];
Product [ 0 ] = New Creatora (). factorymethod ();
Product [ 1 ] = New Creatorb (). factorymethod ();
Console. Read ();
}
}
//
Public Abstract Class Product
{
}
Public Class Producta: Product
{
Public Producta ()
{
Console. writeline ( " Producta BEEN CREATE " );
}
}
Public Class Productb: Product
{
Public Productb ()
{
Console. writeline ( " Productb BEEN CREATE " );
}
}
Public Abstract Class Creator
{
Public Abstract Product factorymethod ();
}
Public Class Creatora: Creator
{
Public Override Product factorymethod ()
{
Return New Producta ();
}
}
Public Class Creatorb: Creator
{
Public Override Product factorymethod ()
{
Return New Productb ();
}
}
}