zoukankan      html  css  js  c++  java
  • Using newInstance() to Instantiate a Fragment(转)

    I recently came across an interesting question on StackOverflow regarding Fragment instantiation:

    What is the difference between new MyFragment() and MyFragment.newInstance()? Should I prefer one over the other?

    Good question. The answer, as the title of this blog suggests, is a matter of proper design. In this case, the newInstance()method is a "static factory method," allowing us to initialize and setup a new Fragment without having to call its constructor and additional setter methods. Providing static factory methods for your fragments is good practice because it encapsulates and abstracts the steps required to setup the object from the client. For example, consider the following code:

    public class MyFragment extends Fragment {
    
        /**
         * Static factory method that takes an int parameter,
         * initializes the fragment's arguments, and returns the
         * new fragment to the client.
         */
        public static MyFragment newInstance(int index) {
            MyFragment f = new MyFragment();
            Bundle args = new Bundle();
            args.putInt("index", index);
            f.setArguments(args);
            return f;
        }
    
    }

    Rather than having the client call the default constructor and manually set the fragment's arguments themselves, we provide a static factory method that does this for them. This is preferred over the default constructor for two reasons. One, it's convenient for the client, and two, it enforces well-defined behavior. By providing a static factory method, we protect ourselves from bugs down the line—we no longer need to worry about accidentally forgetting to initialize the fragment's arguments or incorrectly doing so.

    Overall, while the difference between the two is mostly just a matter of design, this difference is really important because it provides another level of abstraction and makes code a lot easier to understand.

    Feel free to leave a comment if this blog post helped (it will motivate me to write more in the future)! :)

    http://www.androiddesignpatterns.com/2012/05/using-newinstance-to-instantiate.html

    http://www.cnblogs.com/kissazi2/p/4127336.html(有译文)

  • 相关阅读:
    UI自动化测试模型
    Selenium:HTML测试报告
    Selenium:浏览器及鼠标、键盘事件
    Selenium:WebDriver简介及元素定位
    selenium自动化环境搭建(Windows)
    浅谈UI自动化测试
    《MySQL:菜鸟入门系列》
    《HTTP协议:菜鸟入门系列》
    人人都是产品经理<1.0>
    聊聊连接池和线程
  • 原文地址:https://www.cnblogs.com/hubing/p/4722558.html
Copyright © 2011-2022 走看看