设计模式——工厂模式

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">其实呢?</span>
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">我现在,以我目前的水准来学习这个设计模式,也是合适的。</span>
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">如果是以前,我的代码量根本没到那么一个程度,学学习起来,也肯定没有现在这么容易~</span>
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">
</span>
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">最近开始学习设计模式这一块的内容,</span>


今天先开始工厂模式:

对于一个计算器,


比较简单,为了写代码,直接翻译需求,是什么样子呢?

是这样:

 if( operation == "+" )
 	return a + b;
 else if( operation == "-" )
 	return a - b;
 else if( operation == "*" )
 	return a * b;
 else if( operation == "/" )
 	return a / b;

而如果,让代码直接,简洁一点,是什么样呢?

是这个样子:

 switch(operation){
 	case "+" :
 		c = a + b;
 		break;
 	case "-" :
 		c = a - b;
 		break;
 	case "*" :
 		c = a * b;
 		break;
 	case "/" :
 		c = a / b;
 		break;
 }


ok,可是呢?

这样并没有带来,更多的好处,

再来看下一处代码:

public class Operation{
		private int _number_A;
		private int _number_B;
		
		public int Number_A{
			get{
				return this._number_A;
			}
			set{
				this._number_A = value;
			}
		}
		public int Number_B{
			get{
				return this._number_B;
			}
			set{
				this._number_B = value;
			}
		}
		public abstract int GetResult(){}
	}
	
	public class OperationAdd : Operation{
		public override int GetResult(){
			return this.Number_A + this.Number_B;
		}
	}
	public class OperationSub : Operation{
		public override int GetResult(){
			return this.Number_A - this.Number_B;
		}
	}
	public class OperationMul : Operation{
		public override int GetResult(){
			return this.Number_A * this.Number_B;
		}
	}
	public class OperationDiv : Operation{
		public override int GetResult(){
			return this.Number_A / this.Number_B;
		}
	}
	public class Real{
		public void Main(){
		Operation op = null;
		switch(operation){
		case "+" :
			op = new OperationAdd();
			break;
		case "-" :
			op = new OperationSub();
			break;
		case "*" :
			op = new OperationMul();
			break;
		case "/" :
			op = new OperationDiv();
			break;
		}		
			op.Number_A = 1;
			op.Number_B = 2;
			op.GetResult();
			
				
		}
	}

OK、大概简单的工场模式就到这里吧

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值