プログラマーのための数学の基礎[6.ブロックチェーン、仮想通貨、通貨パッケージの制約、内部ループバージョンの列挙](Javaバージョン)

このケースは、コインバッグの実際の技術的アプリケーションです。

ブロックチェーンコインパッケージをご覧になると、当時、先生がお金を払ってくれて、ずっと考えていました。

仮想通貨コインパックには多くのツールがあるので、それを実現するためにどのテクノロジーを使用していますか。数学[列挙型]の仮想通貨内部ループの実用化について、皆さんにお話しましょう。

テスト言語:[Java]

 

1.通貨タイプを作成します(簡単にテストできるように4つ書きました)

インフラストラクチャ[BaseWallet]

package com.item.btype;

import java.math.BigDecimal;
import java.util.Date;

public class BaseWallet {
    private String Id;
    private String UserId;
    private Date LastDate;
    private BigDecimal AllCount;
    private BigDecimal DisCount;


    /**
     * 钱包ID
     */
    public String getId() {
        return Id;
    }

    public void setId(String id) {
        Id = id;
    }

    /**
     * 用户编号
     */
    public String getUserId() {
        return UserId;
    }

    public void setUserId(String userId) {
        UserId = userId;
    }

    /**
     * 最后修改时间
     */
    public Date getLastDate() {
        return LastDate;
    }

    public void setLastDate(Date lastDate) {
        LastDate = lastDate;
    }

    /**
     * 钱包总数量
     */
    public BigDecimal getAllCount() {
        return AllCount;
    }

    public void setAllCount(BigDecimal allCount) {
        AllCount = allCount;
    }

    /**
     * 冻结数量
     */
    public BigDecimal getDisCount() {
        return DisCount;
    }

    public void setDisCount(BigDecimal disCount) {
        DisCount = disCount;
    }
}

取引通貨【BG】

package com.item.btype;

public class BGWallet extends BaseWallet {
}

ビットコイン【BTC】

package com.item.btype;

public class BTCWallet extends BaseWallet {
}

イーサリアム【ETH】

package com.item.btype;

public class ETHWallet extends BaseWallet {
}

ネンモコイン【OMG】

package com.item.btype;

public class OMGWallet extends BaseWallet {
}

2.通貨列挙を作成します

package com.item.btype;

/**
 * @author TeacherFu
 * @date 2021年2月28日12:07:09
 */
public enum WalletEnum {
    BG(1, "BG", "市场币"),
    BTC(1000, "BTC", "比特币"),
    ETC(1001, "ETC", "以太坊"),
    OMG(1002, "OMG", "嫩模币"),
    ;

    /**
     * 根据名字换编号
     *
     * @param Name
     * @return
     */
    public static int GetId(String Name) {
        WalletEnum[] values = WalletEnum.values();
        for (WalletEnum c : WalletEnum.values()) {
            if (c.getName().equals(Name)) {
                return c.getId();
            }
        }
        return -1;
    }

    /**
     * 根据ID换名字
     * @param Id
     * @return
     */
    public static String GetName(int Id) {
        for (WalletEnum c : WalletEnum.values()) {
            if (c.getId() == Id) {
                return c.getName();
            }
        }
        return null;
    }

    /**
     * 编号
     */
    private int Id;
    /**
     * 币种英文名
     */
    private String Name;
    /**
     * 币种中文名
     */
    private String Info;

    /**
     * 构造方法
     *
     * @param Id
     * @param Name
     * @param Info
     */
    WalletEnum(int Id, String Name, String Info) {
    }

    public int getId() {
        return Id;
    }

    public void setId(int id) {
        Id = id;
    }

    public String getName() {
        return Name;
    }

    public void setName(String name) {
        Name = name;
    }

    public String getInfo() {
        return Info;
    }

    public void setInfo(String info) {
        Info = info;
    }
}

3.コインパックセレクター

package com.item.btype;

import java.math.BigDecimal;

/**
 * 币包操作选择器
 */
public class SwitchWallet {
    /**
     * 接口层获取移动端的操作币种编号<br/>
     *
     * @param WalletEnumId
     * @param UserId
     * @return 用户当前所查询币种的信息
     */
    public static BaseWallet UserWalletById(int WalletEnumId, String UserId) {
        /**
         * 根据WalletEnumId标识进行case选择
         */
        switch (WalletEnumId) {
            case 1:
                return new BGWallet();
            case 1001:
                return new BTCWallet();
            case 1002:
                return new ETHWallet();
            case 1003:
                return new OMGWallet();
            default:return null;
        }
    }
}

4.コントローラーはデータを受け入れます

package com.item.btype;

import java.math.BigDecimal;

public class WalletController {
    /**
     * 充当接口层
     * @return
     */
    public Resful AddChange(int WalletEnumId, String Token, BigDecimal ChangeCount){
        if(WalletEnum.GetName(WalletEnumId)==null){
            return new Resful("币种不符");
        }
        /**
         * Token兑换UserId
         * String UserId=redis.TokenToUserId(Token);
         */
        String UserId="asd2asdzpasodospasodpaos";
        /**
         * 获取用户某币种钱包信息,使用父类表承接
         */
        BaseWallet bw=SwitchWallet.UserWalletById(WalletEnumId,UserId);
        //已经获取到对应表的信息,其它功能在业务逻辑层完成即可。
        return new Resful("成功",bw.getAllCount());
    }
}

5.要約:

a)コインパッケージのアイデアは、親子関係のコレクションでのコード操作を簡素化するために、コインパッケージの制約として列挙を使用することです。

 

次の内容:【】:【】

プログラマーは高層ビルから始めて、小学校[数学とは]から[離散数学](主にグラフ理論)まで、基本的な数学を持っています。一歩一歩成長して、一緒に働きましょう。

おすすめ

転載: blog.csdn.net/feng8403000/article/details/114214901