(1)UML设计图
(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);
}
}
}
}