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

抽象工厂:将一些对象抽象出公共方法接口,也就是通常说的接口类和抽象类,具体对象类基础抽象类实现具体逻辑


       //定义动物接口
    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();
        }
    }

优点:搞内聚,低耦合,结构清晰,代码复用性强。
使用:通常用于多个不同角色,背包道具等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值