之前我们说了房贷计算,资讯了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)
痛苦不,扎心不,交了高额的五险一金最后买房用不上……