- 例子还是用简单工厂的例子,在简单工厂的demo中,我创建了一个接口:FengZhuang,他内部有个方法:
public double yunSuan(double a, Integer b);a,b是要进行运算的数据。创建类去实现这个接口,然后完善yunSuan这个方法(加法就写加法的方法。减法就写减法的方法)。然后再创建一个工厂接口fzFactory,给发一个返回值为Fengzhuang类型的方法:FengZhuang createFengZhuang();。然后写具体方法的工厂类:需要实现接口fzFactory,实现接口方法FengZhuang createFengZhuang();给他返回值为FengZhuang实现类。然后在Activity中输入以下代码即可:
fzFactory mFactory = new syFactory();//只要实例化不同,那么也就可以进行不同的运算
fz = mFactory.createFengZhuang();
fz.yunSuan(numA, numB);。运用多态的方法实例化一个运算工厂类fz是(FengZhuang类型的数据)mFactory.createFengZhuang();改方法返回值是Fengzhuang类型,所以fz = mFactory.createFengZhuang();得到: FengZhuang fz=new xxYunSuan();有点绕,开始直接上代码,从运算这一块开始: - YunSuan:
- FengZhuang:
package pattern.design.com.designpattern.FactoryPattern.YunSuan;
/**
* Created by hujhguiyhiu on 2016/9/2.
*/
public interface FengZhuang {
//虚方法,主要就是在继承者们那进行逻辑运算,算法类
public double yunSuan(double a, Integer b);
} - fpYunSuan:
package pattern.design.com.designpattern.FactoryPattern.YunSuan;
import android.util.Log;
/**
* Created by hujhguiyhiu on 2016/9/2.
*/
public class fpYunSua implements FengZhuang {
@Override
public double yunSuan(double a, Integer b) {
Log.d("test", "a=" + a + ",b=" + b);
double t = 0;
t = a + b;
Log.d("test", "fp总计:" + t);
return t;
}
} - syYunSuan:
package pattern.design.com.designpattern.FactoryPattern.YunSuan;
import android.util.Log;
/**
* Created by hujhguiyhiu on 2016/9/2.
*/
public class syYunSua implements FengZhuang {
@Override
public double yunSuan(double a, Integer b) {
Log.d("test", "a=" + a + ",b=" + b);
double t = 0;
t = a + b;
Log.d("test", "sy总计:" + t);
return t;
}
} - zlxYunSuan:
package pattern.design.com.designpattern.FactoryPattern.YunSuan;
import android.util.Log;
/**
* Created by hujhguiyhiu on 2016/9/2.
*/
public class zlxYunSua implements FengZhuang {
@Override
public double yunSuan(double a, Integer b) {
Log.d("test", "a=" + a + ",b=" + b);
double t = 0;
t = a + b;
Log.d("test", "zlx总计:" + t);
return t;
}
}
- FengZhuang:
- Factory类:
- fzFactory:
package pattern.design.com.designpattern.FactoryPattern.factory;
import pattern.design.com.designpattern.FactoryPattern.YunSuan.FengZhuang;
/**
* Created by hujhguiyhiu on 2016/9/2.
*/
public interface fzFactory {
FengZhuang createFengZhuang();
} - fpFactory:
package pattern.design.com.designpattern.FactoryPattern.factory;
import pattern.design.com.designpattern.FactoryPattern.YunSuan.FengZhuang;
import pattern.design.com.designpattern.FactoryPattern.YunSuan.fpYunSua;
/**
* Created by hujhguiyhiu on 2016/9/2.
*/
public class fpFactory implements fzFactory {
@Override
public FengZhuang createFengZhuang() {
return new fpYunSua();
}
} - syFactory:
package pattern.design.com.designpattern.FactoryPattern.factory;
import pattern.design.com.designpattern.FactoryPattern.YunSuan.FengZhuang;
import pattern.design.com.designpattern.FactoryPattern.YunSuan.syYunSua;
/**
* Created by hujhguiyhiu on 2016/9/2.
*/
public class syFactory implements fzFactory {
@Override
public FengZhuang createFengZhuang() {
return new syYunSua();
}
} - zlxFactory:
package pattern.design.com.designpattern.FactoryPattern.factory;
import pattern.design.com.designpattern.FactoryPattern.YunSuan.FengZhuang;
import pattern.design.com.designpattern.FactoryPattern.YunSuan.zlxYunSua;
/**
* Created by hujhguiyhiu on 2016/9/2.
*/
public class zlxFactory implements fzFactory {
@Override
public FengZhuang createFengZhuang() {
return new zlxYunSua();
}
}
- fzFactory:
- Activity:
package pattern.design.com.designpattern;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import pattern.design.com.designpattern.FactoryPattern.YunSuan.FengZhuang;
import pattern.design.com.designpattern.FactoryPattern.factory.fzFactory;
import pattern.design.com.designpattern.FactoryPattern.factory.syFactory;
public class MainActivity extends AppCompatActivity {
private FengZhuang fz;
private EditText editText1;
private EditText editText2;
private Button bt1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
factory();
}
public void factory() {
editText1 = (EditText) findViewById(R.id.et1);
editText2 = (EditText) findViewById(R.id.et2);
bt1 = (Button) findViewById(R.id.bt1);
//类型
bt1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
double numA = Double.valueOf(editText1.getText().toString());
int numB = Integer.valueOf(editText2.getText().toString());
fzFactory mFactory = new syFactory();//只要实例化不同,那么也就可以进行不同的运算
fz = mFactory.createFengZhuang();
fz.yunSuan(numA, numB);
}
});
}
} - 完
工厂模式
最新推荐文章于 2020-06-03 23:05:53 发布