5.应用场景
生产多个产品组合的对象时。
6.优点
代码解耦,创建实例的工作与使用实例的工作分开,使用者不必关心类对象如何创建。
7.缺点
如果增加新的产品,则修改抽象工厂和所有的具体工厂,违反了开放封闭原则
Android 中的 ThreadFactory 就是使用了工厂方法模式来生成线程的,线程就是 ThreadFactory 的产品。
=========================================================================
//抽象产品:Runnable
public interface Runnable {
public abstract void run();
}
//具体产品:Thread
public class Thread implements Runnable {
//构造方法
public Thread(Runnable target, String name) {
init(null, target, name, 0);
}
@Override
//实现抽象产品的抽象方法
public void run() {
if (target != null) {
target.run();
}
}
//其他代码略
}
//抽象工厂:ThreadFactory
public interface ThreadFactory {
Thread newThread(Runnable r);
}
//具体工厂: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());//返回Thread这个产品
}
};
=========================================================================
https://evanchen76.medium.com/design-pattern-factory-method-165724c70532
No comments:
Post a Comment