Tuesday, January 5, 2021

Abstract Factory Pattern

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

n8n index

 【n8n免費本地端部署】Windows版|程式安裝x指令大補帖  【一鍵安裝 n8n】圖文教學,獲得無限額度自動化工具&限時免費升級企業版功能