简单工厂模式(C#)

该博客介绍了C#编程中使用简单工厂模式的设计和实现。通过UML设计图和核心代码展示了如何创建一个工厂类ShapeFactory,它可以根据传入的字符串参数产生Circle、Rectangle或Triangle对象。此外,还展示了在Windows Forms应用中如何通过按钮事件调用工厂方法并执行图形对象的draw和erase操作。

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

1UML设计图

 

(2)核心实现代码

代码主要分为五部分:

1. SimpleFactory接口

namespace SimpleFactory

{

    interface ShapeMethod

    {

        string draw();

        string erase();

    }

}

2.Circle类,Rectangle类,Triangle类分别继承SimpleFactory接口,并实现接口的两个方法:draw()erase()

3.工厂类ShapeFactory,用于产生各种图形对象。其工厂方法createShape,带有字符串型参数name.根据调用者的选择name,产生相应的图形子类对象。返回类型为图形超类类型ShapeMethod。

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace SimpleFactory

{

    class ShapeFactory

    {

        public static ShapeMethod createShape(string name)

        {

            ShapeMethod shape = null;

            switch (name)

            {

                case "Circle": shape = new Circle(); break;

                case "Rectangle": shape = new Rectangle(); break;

                case "Triangle": shape = new Triangle(); break;

                default: throw new UnsupportedShapeException(); break;

            }

            return shape;

        }

    }

}

 

4.From1中的点击各鼠标的事件:

 namespace SimpleFactory

{

    public partial class ShapeClient : Form

    {

        ShapeMethod shape = null;

        public ShapeClient()

        {

            InitializeComponent();

        }

        private void button1_Click(object sender, EventArgs e)

        {

            try

            {

                shape = ShapeFactory.createShape(this.comboBox1.Text);

                richTextBox1.Text += shape.draw() + "\n";

            }

            catch (UnsupportedShapeException ex)

            {

                MessageBox.Show(ex.Message);

            }

        }

        private void button2_Click(object sender, EventArgs e)

        {

            try

            {

                shape = ShapeFactory.createShape(this.comboBox1.Text);

                richTextBox1.Text += shape.erase() + "\n";

            }

            catch (UnsupportedShapeException ex)

            {

                MessageBox.Show(ex.Message);

            }

        }

    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值