Android 设计模式 笔记 - 工厂方法模式
Posted 鲨鱼丶
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 设计模式 笔记 - 工厂方法模式相关的知识,希望对你有一定的参考价值。
介绍:
是创建型设计模式之一。工厂模式是一种结构简单的模式,平时运用广泛,比如Activity中的onCreate方法其实可以看做一个工厂模式
定义:
定义一个用于创建对象的接口,让子类决定实例化哪个类。
使用场景:
在任何需要生成复杂对象的地方都可以使用工厂模式。用new就可以完成创建的对象无需使用工厂模式。
角色:
- 抽象工厂
- 具体工厂
- 抽象产品
- 具体产品
其中抽象工厂是工厂方法的核心,具体工厂是具体的业务逻辑,抽象产品是所创建产品的父类,具体产品是实现抽象产品的具体对象。
简单实现:
package com.mabibin.eg.factory;
/**
* 抽象产品
* @author binbin.ma
*
*/
public abstract class Product
public abstract void method();
package com.mabibin.eg.factory;
/**
* 具体产品A
* @author binbin.ma
*
*/
public class ProductA extends Product
@Override
public void method()
System.out.println("产品A");
package com.mabibin.eg.factory;
/**
* 具体产品B
* @author binbin.ma
*
*/
public class ProductB extends Product
@Override
public void method()
System.out.println("产品B");
package com.mabibin.eg.factory;
/**
* 抽象工厂
* @author binbin.ma
*
*/
public abstract class ProductFactory
public abstract <T extends Product> T createProduct(Class<T> cls) ;
package com.mabibin.eg.factory;
/**
* 具体工厂
* @author binbin.ma
*
*/
public class CreateFactory extends ProductFactory
@Override
public <T extends Product> T createProduct(Class<T> cls)
Product product = null ;
try
product = (Product) Class.forName(cls.getName()).newInstance() ;
catch (InstantiationException e)
// TODO Auto-generated catch block
e.printStackTrace();
catch (IllegalAccessException e)
// TODO Auto-generated catch block
e.printStackTrace();
catch (ClassNotFoundException e)
// TODO Auto-generated catch block
e.printStackTrace();
return (T) product ;
package com.mabibin.eg.factory;
/**
* 实现
* @author binbin.ma
*
*/
public class Client
public static void main(String[] args)
ProductFactory factory = new CreateFactory() ;
Product product = factory.createProduct(ProductA.class) ;
product.method();
以上是关于Android 设计模式 笔记 - 工厂方法模式的主要内容,如果未能解决你的问题,请参考以下文章
java/android 设计模式学习笔记---工厂方法模式