简单工厂模式

using  System;
using  System.Collections.Generic;
using  System.Text;

namespace  Win.DesignPatterns.SimpleFactory
{
    
public   interface  Fruit
    {
        
// 生长
         void  grow();
        
// 收获
         void  harvest();
        
// 种植
         void  plant();
    }

    
public   class  Apple : Fruit
    {
        
public  Apple()
        {
        }

        
public   void  grow()
        {
            Console.WriteLine(
" Apple is growing. " );
        }

        
public   void  harvest()
        {
            Console.WriteLine(
" Apple is harvesting. " );
        }

        
public   void  plant()
        {
            Console.WriteLine(
" Apple is planting. " );
        }
    }

    
public   class  Strawberry : Fruit
    {
        
public  Strawberry()
        {
        }

        
public   void  grow()
        {
            Console.WriteLine(
" Strawberry is growing. " );
        }

        
public   void  harvest()
        {
            Console.WriteLine(
" Strawberry is harvesting. " );
        }

        
public   void  plant()
        {
            Console.WriteLine(
" Strawberry is planting. " );
        }
    }

    
public   class  FruitGardener
    {
        
// 静态工厂方法
         public   static  Fruit factory( string  which)
        {
            
if  (which.Equals( " Apple " ))
            {
                
return   new  Apple();
            }
            
else   if  (which.Equals( " Strawberry " ))
            {
                
return   new  Strawberry();
            }
            
else
            {
                
return   null ;
            }
        }
    }

    
public   class  SimpleFactory
    {
        [STAThread]
        
static   void  Main( string [] args)
        {
            Fruit aFruit 
=  FruitGardener.factory( " Apple " ); // creat apple
            aFruit.grow();
            aFruit.harvest();
            aFruit.plant();
            aFruit 
=  FruitGardener.factory( " Strawberry " ); // creat strawberry
            aFruit.grow();
            aFruit.harvest();
            aFruit.plant();

            Console.ReadLine();
        }
    }
}

你可能感兴趣的:(简单工厂模式)