《Android源码设计模式解析和实战》工厂模式

工厂模式适用于复杂对象的创建:

工厂:
<pre>
public abstract class Factory {
public abstract <T extends Product> T getProduct(Class<T> cls);
}
public class RunningFactory extends Factory {
private static final String TAG = "RunningFactory";

@Override
public <T extends Product> T getProduct(Class<T> cls) {
    Product p = null;
    try {
        p = (Product) Class.forName(cls.getName()).newInstance();
    } catch (Exception e) {
        Log.i(TAG, "getProduct: " + e.getMessage());
        e.printStackTrace();
    }
    return (T) p;
}

}

</pre>
产品:
<pre>
public abstract class Product {
public abstract void start();
public abstract void end();
}

public class AProduct extends Product {
private static final String TAG = "AProduct";

@Override
public void start() {
    Log.i(TAG, "start: ");
}

@Override
public void end() {
    Log.i(TAG, "end: ");
}

}
public class BProduct extends Product {
private static final String TAG = "BProduct";
@Override
public void start() {
Log.i(TAG, "start: ");
}

@Override
public void end() {
    Log.i(TAG, "end: ");
}

}
</pre>
使用:
<pre>
public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    RunningFactory factory = new RunningFactory();
    AProduct a = factory.getProduct(AProduct.class);
    BProduct b = factory.getProduct(BProduct.class);
    a.start();
    b.start();
    a.end();
    b.end();
}

}
</pre>

log:
<pre>
03-06 19:11:34.111 26572-26572/? I/AProduct: start:
03-06 19:11:34.111 26572-26572/? I/BProduct: start:
03-06 19:11:34.111 26572-26572/? I/AProduct: end:
03-06 19:11:34.111 26572-26572/? I/BProduct: end:
</pre>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 设计模式汇总 一、基础知识 1. 设计模式概述 定义:设计模式(Design Pattern)是一套被反复使用、多...
    MinoyJet阅读 4,062评论 1 15
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,365评论 19 139
  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 8,075评论 2 17
  • 简单工厂模式虽然简单,但存在一个很严重的问题。当系统中需要引入新产品时,由于静态工厂方法通过所传入参数的不同来创建...
    justCode_阅读 1,294评论 1 9
  • 还没到点,办公室里已经开始蠢蠢欲动了,约会的约会,饭局的饭局,K歌的K歌,逛街的逛街,设计妹子走到我桌前,老大,跟...
    顾小宝阅读 389评论 1 5

友情链接更多精彩内容