设计模式之工厂方法模式
程序员文章站
2024-01-05 17:14:22
...
定义
定义一个用于创建对象的接口,让子类决定实例化那个类。
Android 源码中的工厂方法模式
- Activity的各种生命周期
- ArrayList和HashSet
特点
优点:
1.工厂方法模式完全符合设计原则,降低了对象之间的耦合。高层模块只需要知道产品的抽象类,其他的实现都不需要关心。
2.良好的封装性,代码结构清晰。扩展性好。缺点:
每次我们为工厂方法模式添加新的产品时就要编写一个新的产品类。同时还要引入抽象层,这必然会导致类结构的复杂化,所以,在某些情况比较简单时,是否要使用工厂模式,需要设计者权衡利弊了。
使用场景
在任何需生成复杂对象的地方,都可以使用工厂方法模式。复杂对象适合使用工厂模式,用 new 就可以完成创建的对象无需使用工厂模式。
简单实现
产品抽象类:
public abstract class Product {
public abstract void method();
}
产品具体类:
public class ProductA extends Product {
@Override
public void method() {
Log.d("TAG", "我是产品A ");
}
}
工厂抽象类:
public abstract class Factory {
public abstract Product createProduct();
}
工厂具体类:
public class ConcreteFactory extends Factory {
@Override
public Product createProduct() {
return new ProductA();
}
}
使用:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initData();
}
private void initData() {
Factory factory = new ConcreteFactory();
Product product = factory.createProduct();
product.method();
}
}
结果:
D/TAG: 我是产品A