Abstract Factory 为创建一族相互关联或者相互依赖的对象提供支持

 GirlFactory
GirlFactory1
 using System;
using System;2

3
 namespace Gof.Test.AbstractFactory
namespace Gof.Test.AbstractFactory4


 {
{5
 public abstract class GirlFactory
    public abstract class GirlFactory 6

 
     {
{ 7
 abstract public Girl Make();
        abstract public Girl Make();8
 }
    }9
 }
}
 PrettyGirlFactory
PrettyGirlFactory1
 using System;
using System;2

3
 namespace Gof.Test.AbstractFactory
namespace Gof.Test.AbstractFactory4


 {
{5
 public class PrettyGirlFactory :  GirlFactory
    public class PrettyGirlFactory :  GirlFactory 6

 
     {
{7
 
    8

 override public Girl Make()
        override public Girl Make()  {return new ChinessGirl(); }
{return new ChinessGirl(); }9

10
 }
    }11
 }
}

1
 using System;
using System;2

3
 namespace Gof.Test.AbstractFactory
namespace Gof.Test.AbstractFactory4


 {
{5
 public class UglilyGirlFactory :GirlFactory
    public class UglilyGirlFactory :GirlFactory 6

 
     {
{7
 
    8

 override public    Girl Make()
        override public    Girl Make()  { return new JappnessGirl(); }
{ return new JappnessGirl(); }9
 }
    }10
 }
}
 Girl
Girl1
 using System;
using System;2

3
 namespace Gof.Test.AbstractFactory
namespace Gof.Test.AbstractFactory4


 {
{5
 public abstract class Girl
    public abstract class Girl 6

 
     {
{ 7
 abstract public void GetName();
        abstract public void GetName();8
 }
    }9
 }
}
 ChinessGirl
ChinessGirl 1
 using System;
using System;2

3
 namespace Gof.Test.AbstractFactory
namespace Gof.Test.AbstractFactory4


 {
{5
 public class ChinessGirl : Girl
    public class ChinessGirl : Girl 6

 
     {
{7

 override public void GetName()
        override public void GetName()  { Console.WriteLine("ChinaGirl");}
{ Console.WriteLine("ChinaGirl");}8
 }
    }9
 }
}10


 JappnessGirl
JappnessGirl 1
 using System;
using System;2

3
 namespace Gof.Test.AbstractFactory
namespace Gof.Test.AbstractFactory4


 {
{5
 public class JappnessGirl : Girl
    public class JappnessGirl : Girl 6

 
     {
{7

 override public void GetName()
        override public void GetName()  { Console.WriteLine("JappnessGirl"); }
{ Console.WriteLine("JappnessGirl"); }8
 }
    }9
 }
}10


 SimilarGirl
SimilarGirl 1
 using System;
using System;2

3
 namespace Gof.Test.AbstractFactory
namespace Gof.Test.AbstractFactory4


 {
{5
 class SimilarGirl
    class SimilarGirl 6

 
     {
{7
 private Girl girl;
        private Girl girl;8
 public SimilarGirl( GirlFactory factory )
        public SimilarGirl( GirlFactory factory )9

 
         {
{10
 // create window, attach Links
            // create window, attach Links11
 girl = factory.Make();
            girl = factory.Make();12
 }
        }13
 public void GetName()
        public void GetName()14

 
         {
{15
 girl.GetName();
            girl.GetName(); 16
 }
        }    17
 
    18
 }
    }19
 }
}20


 客户代码
客户代码1
 #if UNIX
#if UNIX2
 Gof.Test.AbstractFactory.GirlFactory factory = new Gof.Test.AbstractFactory.UglilyGirlFactory();
            Gof.Test.AbstractFactory.GirlFactory factory = new Gof.Test.AbstractFactory.UglilyGirlFactory();3
 #else
#else 4
 Gof.Test.AbstractFactory.GirlFactory factory = new Gof.Test.AbstractFactory.PrettyGirlFactory();
            Gof.Test.AbstractFactory.GirlFactory factory = new Gof.Test.AbstractFactory.PrettyGirlFactory();5
 #endif
#endif6
 Gof.Test.AbstractFactory.Girl g =     factory.Make();
            Gof.Test.AbstractFactory.Girl g =     factory.Make();7
 g.GetName();
            g.GetName();8
 Gof.Test.AbstractFactory.SimilarGirl s = new Gof.Test.AbstractFactory.SimilarGirl(factory);
            Gof.Test.AbstractFactory.SimilarGirl s = new Gof.Test.AbstractFactory.SimilarGirl(factory);9
 s.GetName();
            s.GetName();10
 Console.ReadLine();
            Console.ReadLine();.jpg) 
  
 
                     
                    
                 
                    
                
 
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号