抽象工厂模式

    //创建一个接口
	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;
		}
		
	}

结果: 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值