android 抽象方法的具体实现在那里,每日Android源码设计模式之-5、抽象工厂模式...

昨天讲了工厂模式,很好理解的,今天来讲讲抽象工厂模式,也是非常容易理解的。

先来看看定义:

为创建一组相关或者是相互依赖的对象提供一个接口,而不需要指定他们的具体类。

还记得昨天说到的Factory工厂类吗,其实就是让这个类继承一个抽象的父类:AbstractFactory,里面定义了生成产品的抽象方法,但是不实现,具体实现在子类的Factory1,Factory2中。

于是当我们比如调用了Factory.createProduct(productA)方法,就可以根据Factory1,Factory2中不同的实现方式来生成不同的产品对象。

抽象工厂模式在源码中比较少,

在实际开发中其实也用得较少。大部分情况使用工厂模式即可解决,开发中比较少出现不同的产品种类情况。

在android中有一个类:MediaPlayerFactory有一个抽象方法createPlayer();

有四个具体实现此方法的子类继承他:

1.StagefrightPlayerFactory

2.MuPlayerFactory

3.SonlvoxPlayerFactory

4.TestPlayerFactory

这四种MediaPlayerFactory分别会生成不同的MediaPlayer基类:StagefrightPlayer、NuPlayerDriver、MidiFile、TestPlayerStub。

优点:以一个显著的优点是分离接口与实现,客户端只调用抽象工厂来创建对象,知识面向产品的接口编程,具体的实现分离开来了。

缺点:1.类文件增加很多。2.不易扩展新产品类,当我们没增加一个产品类时,就要修改抽象工厂,然后所有的具体实现工厂全部都要改动。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值