简单工厂模式(C#)

来源:互联网 发布:阿里云服务器最便宜的 编辑:程序博客网 时间:2024/04/28 21:09

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);

            }

        }

    }

}

0 0
原创粉丝点击