今天看了一篇英文文档,写一点自己理解。
文章原链接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; } } }