美文网首页Android开发Android知识
java通过对极光推送数据类的封装实现函数式编写

java通过对极光推送数据类的封装实现函数式编写

作者: 化猿 | 来源:发表于2016-10-12 10:29 被阅读439次

    函数式编程是类似指令集运行一个一个函数封装在一起,起到方便阅读代码编写健壮的程序

    1.实例(通过对极光推送的数据格式封装)

    下面这个例子只操作了一个数据格式,这样比起顺序结构代码风格更好,并且阅读起来毫不费劲。

     JSONObject object =  HxpJpush.getInstance().setplatform("all").pushToDevice("你的订单有人报名了,打开消息界面查看简历!","订单报名",list,ha);
    
    
    

    2.实现过程

    实现过程主要是设置一个静态数据类,每个函数只返回自己的单例,最后的函数返回这个类中的变量

    
    import com.alibaba.fastjson.JSONObject;
    
    import java.util.HashMap;
    import java.util.List;
    
    /**
     * Created by hexiangpeng on 2016/10/11.
     * 极光推送数据结构的封装
     */
    public class HxpJpush {
        private String platform;
    
        //先定义一个唯一的变量
        private  JSONObject jpushObject = new JSONObject();
    
    
        // 实现单例的方法
        private HxpJpush(){};
        public static HxpJpush getInstance(){
            return SingletonHolder.sInstance;
        }
    
        private static class SingletonHolder{
            private static final HxpJpush sInstance = new HxpJpush();
        }
    
    
    
    
        /**
         *
           
         * @param platform  设置推送平台"android", "ios"
         * @return
         */
        public HxpJpush setplatform(String platform){
            jpushObject.put("platform",platform);
            //此构造的主要关键还是返回类本身从而实现命令式的调用
            return  getInstance();
    
        }
        /**
         * 给某个设备推送通知
         * @param msg_content  推送的消息
         * @param msgtitle 推送的ttile
         * @param registerId  推送的目标
         * @param extras 设置另外的东西
         */
        public JSONObject pushToDevice(String msg_content,String msgtitle,List<String> registerId,HashMap<String,String> extras){
    
    
            JSONObject regiserid = new JSONObject();
            regiserid.put("registration_id",registerId);
            jpushObject.put("audience",regiserid);
            jpushObject.put("message",buildMessage(msg_content,msgtitle,extras));
            JSONObject js = new JSONObject();
            if(extras!=null) {
                JSONObject androidObject = noticeIosAndAndroid(extras);
                JSONObject iosObject = noticeIosAndAndroid(extras);
                androidObject.put("alert",msg_content);
                androidObject.put("title",msgtitle);
    
                js.put("android",androidObject);
    //            js.put("ios",iosObject);
            }
    
    
            jpushObject.put("notification",js);
    
            return jpushObject;
    
        }
    
    
        /**
         * 创建message 参考http://docs.jiguang.cn/jpush/server/push/rest_api_v3_push/
         * @param msg_content
         * @param msgtitle   设置
         * @param extras 设置格外的东西
         * @return
         */
        private JSONObject buildMessage(String msg_content,String msgtitle,HashMap<String,String> extras){
            JSONObject messageObject = new JSONObject();
    
            messageObject.put("msg_content",msg_content);
            messageObject.put("content_type","text");
            messageObject.put("title",msgtitle);
            if(extras!=null) {
    //            messageObject.put("extras", extras);
            }
    
            return messageObject;
    
    
        }
    
        /**
         * 增加自定义的key-valua
         * @param extras
         * @return
         */
        private JSONObject noticeIosAndAndroid(HashMap<String,String> extras){
            JSONObject object = new JSONObject();
            object.put("extras",extras);
            return object;
    
        }
    
    
    }
    
    
    

    3.总结

    对一个程序员来说,封装一个健壮可阅读性良好的程序是必然的要求,在实现封装的时候需要考虑设计模式,多线程访问安全的问题,还得充分考虑多参数多用法,及封装类对错误的处理

    我是程序员,编写可爱的代码

    相关文章

      网友评论

        本文标题:java通过对极光推送数据类的封装实现函数式编写

        本文链接:https://www.haomeiwen.com/subject/pnciyttx.html