#21种设计模式之--2--Abstract Factory(抽象工厂)#

  抽象工厂模式提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 
  啥意思?就是把生产抽象成一个接口,每个实例类都对应一个工厂类(普通工厂只有一个工厂类),同时所有工厂类都继承这个生产接口

 生产接口Provider:

interface Provider {
    Animal produce(); 
}

每个产品都有自己的工厂 
CatFactory:

public class CatFactory implements Provider{

    @Override
    public Animal produce() {
        // TODO Auto-generated method stub
        return new Cat();
    }
}

DogFactory:

public class DogFactory implements Provider{

    @Override
    public Animal produce() {
        // TODO Auto-generated method stub
        return new Dog();
    }
}

产品生产:

Provider provider = new CatFactory();
Animal cat =provider.produce();
cat.move();

现在我们要加入panda,直接新建一个pandaFactory就行了,这样我们系统就非常灵活,具备了动态扩展功能。

 

Android中的Factory

  比如AsyncTask的抽象工厂实现:

工厂的抽象:

public interface ThreadFactory {
//省略为备注
 Thread newThread(Runnable r);
}

产品的抽象(new Runnable就是其实现类):

  public interface Runnable {
//省略为备注
  public abstract void run();
}

AsyncTask中工厂类的实现:

private static final ThreadFactory sThreadFactory = new ThreadFactory() {
private final AtomicInteger mCount = new AtomicInteger(1);

public Thread newThread(Runnable r) {
 return new Thread(r, "AsyncTask #" + mCount.getAndIncrement());
}
};

我们可以创建另外类似的工厂,生产某种专门的线程(多线程),非常容易扩展。 
当然,android中的应用还有很多(比如BitmapFactory),有兴趣的小伙伴可以去扒一扒。

扫描二维码关注公众号,回复: 6115626 查看本文章

猜你喜欢

转载自blog.csdn.net/duanpengde123/article/details/89813873