您的位置:首页 > 其它

设计模式<二>-抽象工厂

2016-09-13 12:10 453 查看
抽象工厂:将一些对象抽象出公共方法接口,也就是通常说的接口类和抽象类,具体对象类基础抽象类实现具体逻辑

//定义动物接口
interface IAnimal
{
void Walk();
void Sex();
}

//动物抽象类
abstract  class AbstractDog
{
public void Walk()
{
Console.WriteLine("狗走路");
}
}

//具体对象
class Maledog : AbstractDog,IAnimal
{
public void Sex()
{
Console.WriteLine("性别男");
}
}
//具体对象
class FeMaledog : AbstractDog, IAnimal
{

public void Sex()
{
Console.WriteLine("性别女");
}
}
//工厂接口类
interface IAnimalFactory
{
IAnimal CreateMaleDog();
IAnimal CreateFeMaledog();
}

//工厂抽象类
abstract class AbastractAnimalFactory
{
protected T CreateAnimal<T>() where T :IAnimal, new()
{
T animal = new T();
return animal;

}
}
//工厂实例
class MaleHumanFactory : AbastractAnimalFactory, IAnimalFactory
{
public IAnimal CreateFeMaledog()
{
return  CreateAnimal<FeMaledog>();
}

public IAnimal CreateMaleDog()
{
return CreateAnimal<Maledog>();
}
}

//调用
class Program
{
static void Main(string[] args)
{
MaleHumanFactory factory = new MaleHumanFactory();

IAnimal animal =  factory.CreateFeMaledog();
animal.Sex();
Console.Read();
}
}


优点:搞内聚,低耦合,结构清晰,代码复用性强。

使用:通常用于多个不同角色,背包道具等
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: