//创建一个接口
public interface Shape
{
void draw();
}
//创建实现接口的实体类
public class Rectangle :Shape
{
//@override
public void draw(){
Report.Info("Square::shape().menthod");
}
}
public class Circle :Shape{
//@override
public void draw(){
Report.Info("Circle::shape().menthod");
}
}
public class Square : Shape{
//@override
public void draw(){
Report.Info("Square::shape().menthod");
}
}
//创建一个工厂,生成基于给定信息的实体类的对象
public class ShapeFactory
{
public Shape getShape(string shape){
if(shape=="null"){
return null;
}
else if(shape.Equals("Rectangle")){
return new Rectangle();
}
else if(shape.Equals("Circle")){
return new Circle();
}
else if(shape.Equals("Square")){
return new Square();
}
return null;
}
}
//使用该工厂,通过传递类型信息来获取实体类的对象。
ShapeFactory shapefactory=new ShapeFactory();
Shape shape=shapefactory.getShape("Rectangle");
shape.draw();
Shape Square=shapefactory.getShape("Square");
Square.draw();
Shape Circle=shapefactory.getShape("Circle");
Circle.draw();
枚举优化
public enum ShapeType{
CIRCLE,
RECTANGLE,
SQUARE
}
public void Factory(){
//使用该工厂,通过传递类型信息来获取实体类的对象。
ShapeFactory shapefactory=new ShapeFactory();
Shape shape=shapefactory.getShape(ShapeType.CIRCLE.ToString());
shape.draw();
}