Constance Interface Pattern(CIP)(常數介面模式)
這是個 Anti-Pattern,應該使用其他方法取代它。
CIP 的定義如下
一個介面,該介面沒有任何方法,只有 final static 的常數。e.g.,

public interface ConstanceInterface {
    public static final int CONSTANCE_INT_ZERO = 0;
    public static final int CONSTANCE_INT_ONE = 1;
    public static final int CONSTANCE_INT_TWO = 2;
}

 
想使用這些常數的類別可以藉由實作該介面來取得這些常數,e.g.,

public class ConstanceInterfaceImpl implements ConstanceInterface{
    public int getConstanceInterfaceZero(){
        return CONSTANCE_INT_ZERO;
    }
}

 
CIP的缺點為若常數只提供給某些類別使用,那麼應該定義在該類別中,不需提供公共的介面。
反之,若常數是提供給多數類別使用,那麼可以改用 Utility Class 或是 enum。
Utility Class

public final class ConstanceUtil {
    public static final int CONSTANCE_INT_ZERO = 0;
    public static final int CONSTANCE_INT_ONE = 1;
    public static final int CONSTANCE_INT_TWO = 2;
    private ConstanceUtil(){
        throw new AssertionError();
    }
}

 
Enum

public enum ConstanceEnum {
    CONSTANCE_INT_ZERO(0), CONSTANCE_INT_ONE(1), CONSTANCE_INT_TWO(2);
    private final int mNumber;
    private ConstanceEnum(int number) {
        mNumber = number;
    }
    public int getNumber() {
        return mNumber;
    }
}

 
介面應該回歸於最原始的使用需求,定義型態。
除了定義型態以外不適合用於其他用途。