<pre name="code" class="java"><span style="font-family: Arial, Helvetica, sans-serif;">MainActivity.java</span>
<pre name="code" class="java">package com.cdh.factorymode;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
/**
*
* @Description:简单的工厂模式,精髓在于CreateFactory.java类。利用加减乘除展现
* @author:cdh
* @time:2014年12月11日 上午11:51:20
*/
public class MainActivity extends Activity {
EditText num1, num2;
TextView result;
int strNum1, strNum2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
num1 = (EditText) findViewById(R.id.num1);
num2 = (EditText) findViewById(R.id.num2);
result = (TextView) findViewById(R.id.result);
}
public void onClick(View view) {
// TODO Auto-generated method stub
MyOperate o = null;
strNum1 = Integer.parseInt(num1.getText().toString());
strNum2 = Integer.parseInt(num2.getText().toString());
switch (view.getId()) {
case R.id.add:
o = CreateFactory.createOprate("+");
break;
case R.id.sub:
o = CreateFactory.createOprate("-");
break;
default:
break;
}
o.setNum1(strNum1);
o.setNum2(strNum2);
result.setText("" + o.getResult());
}
}
CreateFactory.java
<pre name="code" class="java">package com.cdh.factorymode;
/**
*
* @Description:工厂类,根据需要,实例化具体的子类
* @author:cdh
* @time:2014年12月11日 下午3:35:20
*/
public class CreateFactory {
public static MyOperate createOprate(String oprate){
MyOperate op=null;
if(oprate.equals("+")){
op=new AddOprate();
}else if(oprate.equals("-")){
op=new subOprate();
}
return op;
}
}
MyOperate.java
<pre name="code" class="java">package com.cdh.factorymode;
/**
*
* @Description:父类,里面包含子类必须实现的方法,子类重写,实现具体操作,如本例中getResult()方法
* @author:cdh
* @time:2014年12月11日 下午3:36:33
*/
public class MyOperate {
int num1;
int num2;
public int getNum1() {
return num1;
}
public void setNum1(int num1) {
this.num1 = num1;
}
public int getNum2() {
return num2;
}
public void setNum2(int num2) {
this.num2 = num2;
}
public double getResult(){
return 0;
};
}
AddOprate.java
<pre name="code" class="java">package com.cdh.factorymode;
/**
* 子类加法
* @Description:TODO
* @author:cdh
* @time:2014年12月12日 上午11:13:56
*/
public class AddOprate extends MyOperate {
double result = 0;
@Override
public double getResult() {
// TODO Auto-generated method stub
result = num1 + num2;
return result;
}
}
subOprate.java
<pre name="code" class="java">package com.cdh.factorymode;
/**
*
* @Description:子类减法
* @author:cdh
* @time:2014年12月12日 上午11:13:33
*/
public class subOprate extends MyOperate{
double result = 0;
@Override
public double getResult() {
// TODO Auto-generated method stub
result = num1 - num2;
return result;
}
}
与AddOprate.java,<span style="font-family: Arial, Helvetica, sans-serif;">subOprate.java一般,以此类推,可添加除法,乘法等类。通过此简单示例代码,可充分了解工厂模式</span>
</pre><pre name="code" class="java">}