swift设计模式学习 - 外观模式

swift设计模式学习 - 外观模式,第1张

概述移动端访问不佳,请访问我的个人博客 设计模式学习的demo地址,欢迎大家学习交流 外观模式 外观模式(Facade),为子系统中的一组接口提供一个一致的界面,定义一个高层接口,这个接口使得这一子系统更加容易使用。 外观模式的基本实现 上图是外观模式的UML图,下面是基本的代码实现过程: //MARK: 外观类class Facade { let one = SubSystemOne(

移动端访问不佳,请访问我的个人博客

设计模式学习的demo地址,欢迎大家学习交流

外观模式

外观模式(Facade),为子系统中的一组接口提供一个一致的界面,定义一个高层接口,这个接口使得这一子系统更加容易使用。

外观模式的基本实现

上图是外观模式的UML图,下面是基本的代码实现过程:

//MARK: 外观类class Facade {    let one   = SubSystemOne()    let two   = SubSystemTwo()    let three = SubSystemThree()    let four  = SubSystemFour()    public func methodA() {        print("方法组A")        one.methodone()        two.methodTwo()        three.methodThree()    }    public func methodB() {        print("方法组B")        two.methodTwo()        three.methodThree()        four.methodFour()    }}//MARK: 子系统类class SubSystemOne {    public func methodone() {        print("子系统方法一")    }}class SubSystemTwo {    public func methodTwo() {        print("子系统方法二")    }}class SubSystemThree {    public func methodThree() {        print("子系统方法三")    }}class SubSystemFour {    public func methodFour() {        print("子系统方法四")    }}
外观模式解决实际问题(购买基金)

在生活中很多地方也用到外观模式,比如购买基金,我们从基金机构那里购买基金,然后他们帮我们管理我们的基金,去 *** 作和运行,我们只管购买和卖出就行了,而不用去管他们内部的 *** 作,下面是UML图和具体实现:

/// 基金类class Fund {    var gu1 = Stock1()    var gu2 = Stock2()    var gu3 = Stock3()    var nd  = NationalDebt()    var rt  = Realty()    public func buyFund() {        print("买入基金")        gu1.buy()        gu2.buy()        gu3.buy()        nd.buy()        rt.buy()    }    public func shellFund() {        print("\n卖出基金")        gu1.shell()        gu2.shell()        gu3.shell()        nd.shell()        rt.shell()    }}//股票类class Stock1: Deal {    var dealname: String {        return "股票一"    }}class Stock2: Deal {    var dealname: String {        return "股票二"    }}class Stock3: Deal {    var dealname: String {        return "股票三"    }}class NationalDebt: Deal {    var dealname: String {        return "国债"    }}class Realty: Deal {    var dealname: String {        return "房地产"    }}protocol Deal {    var dealname: String {get}    mutating func shell()    mutating func buy()}extension Deal {    mutating func shell() {        print("\(dealname)卖出")    }    mutating func buy() {        print("\(dealname)买入")    }}

下面我们调用一下代码:

let jijin = Fund()// 基金购买jijin.buyFund()// 基金赎回jijin.shellFund()

下面是调用的结果:

买入基金股票一买入股票二买入股票三买入国债买入房地产买入卖出基金股票一卖出股票二卖出股票三卖出国债卖出房地产卖出

以上就是简单的外观模式的实现,定义高层接口,基金的买入和卖出,去使用整个基金系统,而不用去管内部是怎么 *** 作的。

外观模式的优点

(1)实现了子系统与客户端之间的松耦合关系。

(2)客户端屏蔽了子系统组件,减少了客户端所需处理的对象数目,并使得子系统使用起来更加容易。

以上是我对外观方法模式的理解,如果有不对的地方欢迎大家交流,最后谢谢大家的阅读~~

总结

以上是内存溢出为你收集整理的swift设计模式学习 - 外观模式全部内容,希望文章能够帮你解决swift设计模式学习 - 外观模式所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1065823.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存