美文网首页设计模式
设计模式-工厂模式

设计模式-工厂模式

作者: Hengry | 来源:发表于2023-10-11 21:48 被阅读0次

通过抽象工厂实现两种推流器,分别为腾讯推流、阿里推流

通过抽象工厂模式,你可以轻松实现两种不同的推流器(腾讯推流器和阿里推流器),而不需要改变使用这些推流器的客户端代码。首先,我们需要定义抽象工厂接口和具体工厂来创建这两种推流器。

首先,定义推流器接口和具体推流器类:

Copy code
// 推流器接口
protocol Streaming {
    func startStreaming()
    func stopStreaming()
}

// 腾讯推流器
class TencentStreaming: Streaming {
    func startStreaming() {
        print("腾讯推流器开始推流")
    }

    func stopStreaming() {
        print("腾讯推流器停止推流")
    }
}

// 阿里推流器
class AliStreaming: Streaming {
    func startStreaming() {
        print("阿里推流器开始推流")
    }

    func stopStreaming() {
        print("阿里推流器停止推流")
    }
}

然后,定义抽象工厂接口和具体工厂类来创建不同的推流器:

Copy code
// 抽象工厂接口
protocol StreamingFactory {
    func createStreaming() -> Streaming
}

// 腾讯推流工厂
class TencentFactory: StreamingFactory {
    func createStreaming() -> Streaming {
        return TencentStreaming()
    }
}

// 阿里推流工厂
class AliFactory: StreamingFactory {
    func createStreaming() -> Streaming {
        return AliStreaming()
    }
}

现在,你可以使用这些工厂来创建不同类型的推流器:

Copy code
let tencentFactory = TencentFactory()
let tencentStreaming = tencentFactory.createStreaming()
tencentStreaming.startStreaming()  // 输出:腾讯推流器开始推流
tencentStreaming.stopStreaming()   // 输出:腾讯推流器停止推流

let aliFactory = AliFactory()
let aliStreaming = aliFactory.createStreaming()
aliStreaming.startStreaming()      // 输出:阿里推流器开始推流
aliStreaming.stopStreaming()       // 输出:阿里推流器停止推流

通过抽象工厂模式,你可以轻松切换不同的推流器类型,而不会影响使用它们的客户端代码。这使得代码更加灵活、可维护,并且有助于实现产品家族的独立变化。

并且通过简单工厂将两种推流器进行封装统一使用
通过简单工厂模式,你可以将不同种类的推流器(腾讯推流器和阿里推流器)进行封装,以便客户端可以使用一个>简单的接口来创建和使用它们。

首先,定义一个推流器工厂类,它将负责创建具体的推流器:

Copy code
class StreamingFactory {
    enum StreamingType {
        case tencent
        case ali
    }
    
    static func createStreaming(type: StreamingType) -> Streaming {
        switch type {
        case .tencent:
            return TencentStreaming()
        case .ali:
            return AliStreaming()
        }
    }
}

现在,你可以使用 StreamingFactory 来创建不同类型的推流器,而无需关心具体的实现:

Copy code
let tencentStreaming = StreamingFactory.createStreaming(type: .tencent)
tencentStreaming.startStreaming()  // 输出:腾讯推流器开始推流
tencentStreaming.stopStreaming()   // 输出:腾讯推流器停止推流

let aliStreaming = StreamingFactory.createStreaming(type: .ali)
aliStreaming.startStreaming()      // 输出:阿里推流器开始推流
aliStreaming.stopStreaming()       // 输出:阿里推流器停止推流

通过使用简单工厂模式,你可以封装具体推流器的创建细节,提供了一个统一的接口供客户端使用。这种方法使得客户端代码更加简洁,同时具有扩展性,因为你可以轻松地添加新的推流器类型,而不需要修改客户端代码。

相关文章

  • 设计模式四、抽象工厂模式

    系列传送门设计模式一、单例模式设计模式二、简单工厂模式设计模式三、工厂模式设计模式四、抽象工厂模式 抽象工厂模式 ...

  • 工厂模式

    java设计模式-工厂模式 工厂模式: 工厂模式是java设计模式里最常用的设计模式之一。 工厂模式属于创建型模式...

  • 设计模式之工厂模式

    设计模式之工厂模式 标签(空格分隔): 设计模式 工厂模式 设计模式的感念 设计模式的应用 工厂设计模式的产生 工...

  • 设计模式三、工厂模式

    系列传送门设计模式一、单例模式设计模式二、简单工厂模式设计模式三、工厂模式设计模式四、抽象工厂模式 工厂模式 在一...

  • 设计模式一、单例模式

    系列传送门设计模式一、单例模式设计模式二、简单工厂模式设计模式三、工厂模式设计模式四、抽象工厂模式 简单单例(推荐...

  • 单件设计模式

    一、定义 设计模式 设计模式就是一种更好的编写代码方案。 常见设计模式 工厂设计模式、抽象工厂设计模式、抽象工厂设...

  • iOS设计模式(三)之抽象工厂模式

    设计模式系列传送门 iOS设计模式(一)之简单工厂模式iOS设计模式(二)之工厂模式iOS设计模式(三)之抽象工厂...

  • iOS设计模式(一)之简单工厂模式

    设计模式系列传送门 iOS设计模式(一)之简单工厂模式iOS设计模式(二)之工厂模式iOS设计模式(三)之抽象工厂...

  • iOS设计模式(二)之工厂模式

    设计模式系列传送门 iOS设计模式(一)之简单工厂模式iOS设计模式(二)之工厂模式iOS设计模式(三)之抽象工厂...

  • 常用设计模式

    设计模式 工厂模式 工厂模式思路上分:简单工厂模式,工厂模式, 抽象工厂模式// 抽象工厂模式可以代替工厂模式,做...

网友评论

    本文标题:设计模式-工厂模式

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