Android设计模式(一)工厂模式

我们在Android开发过程中,设计模式是经常被提起并被使用的,如果你作为一个Android开发者对设计模式非常的陌生,嗯,那么我觉得你离大牛的距离还有点远,那么什么是设计模式呢?其实很容易理解,当你开发项目的时候会出现大量重复工作,那么可能你遗忘掉了设计模式的好处,设计模式就是为了你写出高质量,易维护的代码而存在的。

OK!咱们废话不多说了,直接进入正题,这次我们先来说说Android设计模式中的工厂模式,至于什么是工厂模式,官方有很多的解释,我也不好拿它的来说事,之间简单点,说例子:公司有个项目需要用到定位,在讨论的时候有说使用百度的,有说使用高德的,那么到底用哪个,大家各执一词难分上下。最后CTO发话了,俩都用,哪个好用哪个。那么问题来了,他说了跟没说一样,问题还是回到到底用哪个?工厂模式派上用场了呗,我两个定位都给你写上,给你设置一个开关,想用哪个用哪个,用着百度不爽了,我就改个参数就可以用高德了,好了,代码就是下面的这种了:

public class test {
       public static void main(String[] args) {
              Location position= new LocationFactory().getInstance("xiaomi");
              position.getPosition();
              position.getCityName(10, 20);
       }
}

class LocationFactory{
       public static Location getInstance(String type){
              if("baidu".equals(type)){
                     return new BaiduLocation();
              }else {
                     return new GaodeLocation();
              }
       }
}
class BaiduLocation implements Location{
       @Override
       public void getPosition() {
              // TODO Auto-generated method stub
              System.out.println("通过百度定位获取到当前的经纬度是XXXXX");
       }
       @Override
       public void getCityName(long lat, long lng) {
              // TODO Auto-generated method stub
              System.out.println("通过百度定位获取到当前的城市是XXXXX");
       }
}
class GaodeLocation implements Location{
       @Override
       public void getPosition() {
              // TODO Auto-generated method stub
              System.out.println("通过高德定位获取到当前的经纬度是XXXXX");
       }
       @Override
       public void getCityName(long lat, long lng) {
              // TODO Auto-generated method stub
              System.out.println("通过高德定位获取到当前的城市是XXXXX");
       }
}
interface Loction{
    public void getPosition();
    public void getCityName(long lat,long lng);
}

上面的方法非常简单明了的阐述了工程模式的例子,LocationFactory就是一个工厂类,同个静态方法getInstance的参数返回不一样的定位类,定位类中实现了获取经纬度以及过经纬度获取定位信息的方法,调用他们就可以很简单是实现这两个方法,是不是很方便?如果你还想用其它的定位api你只需要构造一个方法,通过getInstance参数的改变就可以使用了,当然其他的方法和功能都是可以通过这个举一反三实现出来的。相信大家应该也弄明白了工厂模式了。那么你使用到了吗? 比如bitmap里面的bitmapfactory就是这样实现的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值