您的位置:首页 > 移动开发 > Android开发

为什么android中parcelable的实现需要CREATOR

2018-03-06 12:12 344 查看
在查看parcelable的使用使用方法时有提到,实现parcelable的类必须有一个静态域CREATOR 实现creator<T>接口,但是并未说明为什么,代码查看在java FW层也查看不到其使用的地方,但是比较困惑,今天在重温java编程思想的时候,看到一个例子,豁然开朗,废话不多说,上代码:package designandpatternTest;

/**
* This class is written for the example to illustrate the interface and the
* innerclass, and how to use the Factory pattern, and it may reveal why the
* parcelable in the android must have a CREATOR static field
*
* see how the FACTORY field works just like the parcelabel CREATOR field in the android.
*
* @author bdgong
*
*/

interface Game {
boolean move();
}

interface GameFactory {
Game getGame();
}

class Checkers implements Game {

private Checkers() {
}

private int moves = 0;
private static final int MOVES = 3;

public boolean move() {
System.out.println("Checkers move " + moves);
return ++moves != MOVES;
}

public static final GameFactory FACTORY = new GameFactory() {

public Game getGame() {
return new Checkers();
}
};
}

class Chess implements Game {
private Chess() {
}

private int moves = 0;
private static final int MOVES = 4;

public boolean move() {
System.out.println("Chess move " + moves);
return ++moves != MOVES;
}

public static final GameFactory FACTORY = new GameFactory() {

public Game getGame() {
return new Chess();
}
};

}

public class InnerClassForFactory {

static void playGame(GameFactory factory) {
Game s = factory.getGame();
while (s.move());
}

public static void main(String[] args) {
playGame(Checkers.FACTORY);
playGame(Chess.FACTORY);
}
}以上FACTORY的使用应该可以揭示CREATOR的使用,这也是工厂方法的一个典型使用方式。
以记之。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐