今天看了一篇英文文档,写一点自己理解。
文章原链接https://en.wikipedia.org/wiki/Abstract_factory_pattern
一个类 他创建对象可以跟这个类本身的构造无关,一个类的对象创建可以通过一个工厂类来创建。
要实现某个功能,可以用一个接口来表示 ,然后写一些类来实现这个接口。
这些类创造实体可以通过工厂类。
这个工厂类实现一个工厂类接口 这个接口里面有方法可以返回你要实现的功能。
以后如果 这个类改了,那就通过该工厂类的创建类对象方法体来修改,不需要到每个java文件里面改,成功做到类与对象创建的解耦。
public class Button1 implements IButton {
@Override
public void print() {
Log.i("button","button111111111111111");
}
}
public class Button2 implements IButton {
@Override
public void print() {
Log.i("button","button2222222222222");
}
}
public class Button1Factory implements IFactory {
@Override
public IButton createButton() {
return new Button1();
}
}
public class Button2Factory implements IFactory {
@Override
public IButton createButton() {
return new Button2();
}
}
public interface IButton {
public void print();
}
public interface IFactory {
public IButton createButton();
}
public class MainActivity extends AppCompatActivity {
@Inject
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
printButton(1);
printButton(2);
}
public void printButton(int i) {
switch (i) {
case 1:
Button1 button1 = (Button1) new Button1Factory().createButton();
button1.print();
break;
case 2:
Button2 button2 = (Button2) new Button2Factory().createButton();
button2.print();
break;
default:
break;
}
}
}