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

3
namespace Gof.Test.AbstractFactory4


{5
public abstract class GirlFactory 6

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

3
namespace Gof.Test.AbstractFactory4


{5
public class PrettyGirlFactory : GirlFactory 6

{7
8

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

10
}11
}1
using System;2

3
namespace Gof.Test.AbstractFactory4


{5
public class UglilyGirlFactory :GirlFactory 6

{7
8

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

3
namespace Gof.Test.AbstractFactory4


{5
public abstract class Girl 6

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

3
namespace Gof.Test.AbstractFactory4


{5
public class ChinessGirl : Girl 6

{7

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

1
using System;2

3
namespace Gof.Test.AbstractFactory4


{5
public class JappnessGirl : Girl 6

{7

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

1
using System;2

3
namespace Gof.Test.AbstractFactory4


{5
class SimilarGirl 6

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

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

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

1
#if UNIX2
Gof.Test.AbstractFactory.GirlFactory factory = new Gof.Test.AbstractFactory.UglilyGirlFactory();3
#else 4
Gof.Test.AbstractFactory.GirlFactory factory = new Gof.Test.AbstractFactory.PrettyGirlFactory();5
#endif6
Gof.Test.AbstractFactory.Girl g = factory.Make();7
g.GetName();8
Gof.Test.AbstractFactory.SimilarGirl s = new Gof.Test.AbstractFactory.SimilarGirl(factory);9
s.GetName();10
Console.ReadLine();

浙公网安备 33010602011771号