C#编程模式之工厂方法模式

本文介绍了C#中的工厂方法模式,通过实例展示了如何使用接口和继承实现对象的创建解耦。该模式有助于代码复用和逻辑清晰,但增加了代码量。后续将介绍简单工厂模式和抽象工厂模式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        书接上回,我们继续探讨C#编程模式,本文主要介绍工厂方法模式。这种模式本质上是封装了对象创建的逻辑,使客户端代码与具体的产品实现解耦,具有可拓展性、封装性等有优势。文章末尾有源码链接。

        工厂模式主要有以下分类:1、简单工厂模式;2、工厂方法模式;3、抽象工厂模式。简单工厂模式暂时不做介绍,抽象工厂模式会在后续更新,这里将会介绍工厂方法模式。工厂方法模式的核心是将对象的创建抽象成一个工厂接口,让子类来实现这个接口以创建具体的对象。

        关键代码如下:

        1、创建工厂接口

    /// <summary>
    /// 职业接口
    /// </summary>
    public interface IWork
    {
        /// <summary>
        /// 职业的主要工作内容
        /// </summary>
        string Action();
    }

        2、创建职业类型,并继承工厂接口

    /// <summary>
    /// 警察
    /// </summary>
    public class CPolice : IWork
    {
        /// <summary>
        /// 实现接口的方法
        /// </summary>
        /// <exception></exception>
        public string Action()
        {
            return string.Format("我是警察,我负责维护社会治安");
        }
    }
    /// <summary>
    /// 教师
    /// </summary>
    public class CTeacher : IWork
    {
        /// <summary>
        /// 实现接口的方法
        /// </summary>
        /// <returns></returns>
        /// <exception cref="NotImplementedException"></exception>
        public string Action()
        {
            return string.Format("我是教师,我负责教会学生知识");
        }
    }

        3、创建职业工厂接口

    /// <summary>
    /// 职业工厂接口
    /// </summary>
    public interface IWorkFactory
    {
        /// <summary>
        /// 获取相关职业
        /// </summary>
        /// <returns></returns>
        IWork GetWork();
    }

        4、创建职业工厂,继承职业工厂接口。

    /// <summary>
    /// 警察工厂
    /// </summary>
    public class CPoliceFactory : IWorkFactory
    {
        /// <summary>
        /// 实现接口
        /// </summary>
        /// <returns></returns>
        /// <exception cref="NotImplementedException"></exception>
        public IWork GetWork()
        {
            return new CPolice();
        }
    }
    /// <summary>
    /// 教师工厂
    /// </summary>
    public class CTeacherFactory : IWorkFactory
    {
        /// <summary>
        /// 实现接口
        /// </summary>
        /// <returns></returns>
        /// <exception></exception>
        public IWork GetWork()
        {
            return new CTeacher();
        }
    }

        5、客户端调用。

        /// <summary>
        /// 工厂模式测试
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btn_factory_Click(object sender, EventArgs e)
        {
            IWork work = (new CPoliceFactory()).GetWork();
            tbox_factory.Text = work.Action();
        }

        针对调用,我这里是winform按钮实现的,各位伙伴可根据需要,把里面的代码移植。

        工厂模式能够避免重复代码,也会使逻辑清晰。但是也有一定的弊端,就是会增加代码量库😂。

        源码链接:C#编程模式之工厂方法模式+抽象工厂模式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值