设计模式之工厂方法模式

定义

定义一个用于创建对象的接口,让子类决定实例化那个类。

Android 源码中的工厂方法模式

  1. Activity的各种生命周期
  2. 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 

你可能感兴趣的:(设计模式之工厂方法模式)