当前位置: 首页 > news >正文

做征婚网站创意营销案例

做征婚网站,创意营销案例,单页面网站设计,seo营销技巧金融app相对普通app而言,出于安全考虑,其安全校验方式比较多,以某些银行app为例,手机号登录成功后,会增加指纹、手势、OCR人脸等验证!这些安全项的校验,会根据用户的风险等级有不同的校验优先级…

金融app相对普通app而言,出于安全考虑,其安全校验方式比较多,以某些银行app为例,手机号登录成功后,会增加指纹、手势、OCR人脸等验证!这些安全项的校验,会根据用户的风险等级有不同的校验优先级,例如A客户的校验顺序是先指纹->手势->OCR,B客户的校验顺序可能是先手势->OCR,其验证顺序不固定,故此处用责任链的模式来设计更为合理:

demo地址:https://download.csdn.net/download/denggun12345/88104411?spm=1001.2014.3001.5503

//基类BusinessObject

#import <Foundation/Foundation.h>

#import <UIKit/UIKit.h>

NS_ASSUME_NONNULL_BEGIN

@class BusinessObject;

typedef void(^CompletionBlock)(BOOL handled);

typedef void(^ResultBlock)(BusinessObject *handler, BOOL handled);

@interface BusinessObject : NSObject

@property (nonatomic,strong) UILabel *LB;

//下一个响应者

@property (nonatomic,strong) BusinessObject *nextBusiness;

//响应者的处理方法

-(void)handle:(ResultBlock)result;

//各个业务在该方法当中做时机业务处理

-(void)handleBusiness:(CompletionBlock)completion;

@end

NS_ASSUME_NONNULL_END

#import "BusinessObject.h"

@implementation BusinessObject

//责任链入口方法

-(void)handle:(ResultBlock)result{

    CompletionBlock completion = ^(BOOL handled){

        //当前业务处理掉了,上抛结果

        if(handled){

            result(self,handled);

        }else{

            //沿着责任链,指派给下一个业务处理

            if(self.nextBusiness){

                [self.nextBusiness handle:result];

            }else{

                //没有业务处理,上抛

                result(nil,NO);

            }

        }

    };

    //当前业务进行处理

    [self handleBusiness:completion];

}

-(void)handleBusiness:(CompletionBlock)completion{

    //业务逻辑处理

    //如不网络请求、本地照片查询等

}

@end

模拟业务类,即继承基类的类,用来模拟指纹、手势、ocr的业务类

#import "BusinessObjectA.h"

@implementation BusinessObjectA

-(void)handleBusiness:(CompletionBlock)completion{

    NSLog(@"BusinessObjectA");

    if ([self.LB.text isEqualToString:@"0"]) {

        completion(YES);

    }else{

        completion(NO);

    }   

}

@end

#import "BusinessObjectB.h"

@implementation BusinessObjectB

-(void)handleBusiness:(CompletionBlock)completion{

    NSLog(@"BusinessObjectB");

    if ([self.LB.text isEqualToString:@"0"]) {

        completion(YES);

    }else{

        completion(NO);

    }

}

@end

#import "BusinessObjectC.h"

@implementation BusinessObjectC

-(void)handleBusiness:(CompletionBlock)completion{

    NSLog(@"BusinessObjectC");

    if ([self.LB.text isEqualToString:@"0"]) {

        completion(YES);

    }else{

        completion(NO);

    }

}

@end

//模拟处理逻辑优先级

#import "ViewController.h"

#import "BusinessObjectA.h"

#import "BusinessObjectB.h"

#import "BusinessObjectC.h"

@interface ViewController ()

//背景变红色

@property (nonatomic,assign) BOOL isOuShu;

@property (weak, nonatomic) IBOutlet UILabel *LBOne;

@property (weak, nonatomic) IBOutlet UILabel *LBTwo;

@property (weak, nonatomic) IBOutlet UILabel *LBThree;

@property (nonatomic,strong) NSArray *testArray;

@property (weak, nonatomic) IBOutlet UIButton *testBtn;

@end

@implementation ViewController

-(NSArray *)testArray{

    if(!_testArray){

        _testArray = @[@1,@2,@3];

    }

    return _testArray;

}

- (void)viewDidLoad {

    [super viewDidLoad];

    // Do any additional setup after loading the view.}

- (IBAction)ClickAction:(id)sender {

    int x = arc4random() % 3;//0 1 2 模拟责任链中密码、手势、指纹的优先级

    self.LBOne.text = [NSString stringWithFormat:@"%d",x];

    self.LBTwo.text = [NSString stringWithFormat:@"%d",x-1];

    self.LBThree.text = [NSString stringWithFormat:@"%d",x-2];

    //开始责任链

    //a指纹

    BusinessObjectA *objA = [BusinessObjectA new];

    objA.LB = self.LBOne;

    [objA handle:^(BusinessObject * _Nonnull handler, BOOL handled) {

        if(handled){

            NSLog(@"a_yes_handler_test:%@",handler.LB.text);

            [self.testBtn setTitle:@"LBOne" forState:UIControlStateNormal];

        }else{

            NSLog(@"a_no_handler_test:%@",handler.LB.text);

        }

        

    }];

    //b手势

    BusinessObjectB *objB = [BusinessObjectB new];

    objB.LB = self.LBTwo;

    objA.nextBusiness = objB;

    [objB handle:^(BusinessObject * _Nonnull handler, BOOL handled) {

        if(handled){

            NSLog(@"b_yes_handler_test:%@",handler.LB.text);

            [self.testBtn setTitle:@"LBTwo" forState:UIControlStateNormal];

        }else{

            NSLog(@"b_no_handler_test:%@",handler.LB.text);

        }

    }];

    //cOCR

    BusinessObjectC *objC = [BusinessObjectC new];

    objC.LB = self.LBThree;

    objB.nextBusiness = objC;

    [objC handle:^(BusinessObject * _Nonnull handler, BOOL handled) {

        if(handled){

            [self.testBtn setTitle:@"LBThree" forState:UIControlStateNormal];

            NSLog(@"c_yes_handler_test:%@",handler.LB.text);

        }else{

            NSLog(@"c_no_handler_test:%@",handler.LB.text);

        }

    }];

}

@end

http://www.hkea.cn/news/227257/

相关文章:

  • 怎么样做淘宝优惠券网站搜索引擎营销的优缺点
  • wordpress动态订单seo社区
  • 网站域没到期不能续费吗google谷歌搜索
  • 厦门好的做网站公司网络营销推广方式都有哪些
  • 重庆市建设工程信息官网站自己做网站的流程
  • 网站建设公司怎么做网络营销网站推广
  • 360应用商店seo服务套餐
  • 废橡胶网站建设个人博客网页设计
  • 什么网站做一手项目好域名查询官网
  • 做日用品的要找什么网站好站长工具端口检测
  • 贵州软件开发 网站开发手机版百度一下
  • 企业网站建立答辩问题百度怎么发布广告
  • 温州快建网站地推拉新接单网
  • 濉溪县城乡建设委员会燃气办网站热狗网站排名优化外包
  • 网站能不能自己做免费的seo教程
  • 湖南的商城网站建设优化教程网下载
  • 做网站需要哪些工程师西安seo诊断
  • tp做的网站封装成app2023北京封控了
  • 增城做网站要多少钱推广普通话手抄报
  • 石家庄网站系统开发智能搜索引擎
  • 迅速网站网络营销平台推广方案
  • 学前端要逛那些网站微信引流主动被加软件
  • 韩国flash网站免费手机网站建站平台
  • 东莞做网站卓诚网络昆明长尾词seo怎么优化
  • WordPress个性萌化插件郑州seo优化哪家好
  • 专业手机移动网站建设免费的seo优化
  • 西安网站建设王永杰域名注册 万网
  • 网站营销优化方案北京做的好的seo公司
  • 企业网站排名提升软件优化南宁seo优化
  • 创意合肥网站建设杭州seo公司排名