//创建一个接口
public interface Shape
{
void draw();
}
public interface Color
{
void fill();
}
//创建实现接口的实体类
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 abstract class AbstractFactory{
public abstract Shape getShape(string shape);
public abstract Color getColor(string color);
}
//创建一个工厂,生成基于给定信息的实体类的对象
public class ShapeFactory :AbstractFactory
{
public override 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;
}
public override Color getColor(String color) {
return null;
}
}
//创建实现接口的实体类
public class Red :Color
{
//@override
public void fill(){
Report.Info("Red::fill().menthod");
}
}
public class Green :Color{
//@override
public void fill(){
Report.Info("Green::fill().menthod");
}
}
public class Blue : Color{
//@override
public void fill(){
Report.Info("Blue::fill().menthod");
}
}
//创建一个工厂,生成基于给定信息的实体类的对象
public class ColorFactory : AbstractFactory
{
public override Color getColor(string Color){
if(Color=="null"){
return null;
}
else if(Color.Equals("Green")){
return new Green();
}
else if(Color.Equals("Blue")){
return new Blue();
}
else if(Color.Equals("Red")){
return new Red();
}
return null;
}
public override Shape getShape(String shape) {
return null;
}
}
public class FactoryPrpducer{
public static AbstractFactory GetFactory(string choice){
if(choice.Equals("color")){
return new ColorFactory();
}
if(choice.Equals("shape")){
return new ShapeFactory();
}
return null;
}
}
结果: