专栏首页大话swift房贷选择之策略模式

房贷选择之策略模式

之前我们说了房贷计算,资讯了icbc,给出了你大致的每月房贷明细,也给出了你N中贷款方式,那么今天我们就扯一下贷款选哪种方式吧。 1 商贷 2公积金 3组合贷款 对于大众来说你能选只有这几个?有人说还有全款,那你不是杠精就是款爷…… 纠结吧,那就对了不过不是重点……重点是我们要使用计算编程语言来体现这种纠结体。

策略模式

策略模式作为一种[软件设计模式,指对象有某个行为,但是在不同的场景中,该行为有不同的实现算法。

场景使用

1 表现行为不同,但是是可以采用不同的方式处理 2 有固定的几种处理办法可供选择,将算法抽离出来供选择 3 对外内部细节屏蔽,只提供方案

实例:

wo:我能选择哪种房贷方式? icbc:你有公积金吗?北京的只能北京使用,不能在你老家使用? wo:那我怎么办? icbc:可以商贷啊 心中再次一万个羊驼狂奔而过 好了,吐槽完我们看看怎么实现银行的霸道方式吧 首先要有个上下文来担当处理人,它手握锦囊

protocol LoadStrategy{

func load(_ load:Load)

}

class LoadContext{

var strategy: LoadStrategy

init(_ strategy: LoadStrategy) {

self.strategy = strategy

}

func load(_ load: Load) -> Void {

self.strategy.load(load)

}

}

其次,有多少个锦囊呢? 我们一共有3个锦囊,不对,是银行只有3个锦囊---等额本金 等额本息 公积金

class AverageCapitalPlusInterestStrategy:AverageCapitalPlusInterest, LoadStrategy{

func load(_ load: Load) {

load.accept(visiter: self)

print("申请等额本息:\n\(self.monthMoneys)")

}

}

class AverageCapitalStrategy: AverageCapital, LoadStrategy{

func load(_ load: Load) {

load.accept(visiter: self)

print("申请等额本金:\n\(self.monthMoneys)")

}

}

class AccumulaFundStrategy: LoadStrategy{

func load(_ load: Load) {

// load.accept(visiter: self)

print("不好意思ICBC不支持您公积金贷款")

}

}

最后你开始犯病----纠结综合征迎头而来随即附体

看看你怎么选择吧:

let s1 = AverageCapitalStrategy.init()

let s2 = AccumulaFundStrategy.init()

let s3 = AverageCapitalPlusInterestStrategy.init()

1 等额本金

let context = LoadContext.init(s1)

context.load(myLoad)

2 等额本息

let context = LoadContext.init(s2)

context.load(myLoad)

3 公积金

let context = LoadContext.init(s3)

context.load(myLoad)

痛苦不,扎心不,交了高额的五险一金最后买房用不上……

本文分享自微信公众号 - 大话swift(gh_ca2266b7cab0),作者:YuLongLi

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-02-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 二 iOS模版引擎--Stencil

    大话swift
  • 房贷计算之访问者模式

    wo:怎么贷款啊?有什么方式 icbc:我们有等额本金和等额本息两种方式? wo:不是说还有公积金吗? icbc: 公积金?NO,目前额度紧张,本金的不好批,建...

    大话swift
  • iOS 模版引擎加速web预览

    在iOS开发中大家对于有些功能和模块不可避免的需要使用HTML来加速开发和实现功能的快速变更,例如:预览和活动页面。 基于需求的不断变更大家很多采用的H5来做,...

    大话swift
  • runtime的那些事(三)——NSObject初始化 load 与 initialize

     作为iOS开发,多少都与 load 方法打过交道——在程序 main 函数调用前,类被注册加载到内存时,load 方法会被调用。也就是说每个类的 load 方...

    我只不过是出来写写代码
  • GitHub发布10月21日系统故障分析报告

    刚刚 GitHub 通过官方博客发布了 21 日“挂掉”的事件分析:October 21 post-incident analysis

    Fundebug
  • 从Service Mesh谈如何做好监控

    谈到 Service Mesh,人们总是想起微服务和服务治理,从 Dubbo 到 Spring Cloud (2016开始进入国内研发的视野,2017年繁荣)再...

    用户5397975
  • python之crawlspider初探

    <pre style="margin: 0px; padding: 0px; white-space: pre-wrap; overflow-wrap: bre...

    用户5760343
  • JDK14中record实践尝鲜

    他来了他来了,不好意思, 他来晚了. 大家好, 我是小刀,前几天看到朋友圈被jdk14的GA版本刷屏了,我一直忍到现在才写,,,唉,实在是惭愧惭愧.

    微笑的小小刀
  • package.json文件快速入门详解

    相信入门nodejs或者npm的同学会对package.json这个文件有疑惑,对这个文件的作用不是很清晰,但搭建自己的博客每每用到node,npm这个文件又必...

    wblearn
  • Python使用Scrapy框架爬虫(一)

    1.首先我们需要安装scrapy模块,pip install scrapy ,不过这种方式经常会遇到许多未知的bug

    黄林晴

扫码关注云+社区

领取腾讯云代金券