IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 设计模式-工厂模式(Kotlin) -> 正文阅读

[移动开发]设计模式-工厂模式(Kotlin)

在面向对象语言中,万物皆是对象,如果在需要创建对象的时候直接新建一个对象,就会对该对象耦合严重,如果我们需要更换对象时,就需要对所有新建对象的地方都修改一边,这就违背了开闭原则。因此会使用工厂模式来创建对象,我们可以直接在工厂中创建对象,因此更换对象也可以直接在工厂中进行,这样就达到了与对象解耦的目的,因此,工厂模式最大的优点就是与对象解耦

1,简单工厂模式

简单工厂模式并不属于设计模式的一种,反而更像是一种编程习惯

简单工厂模式包含如下角色

·抽象产品:定义了产品的规范,描述了产品的主要特征和性能

·具体产品:实现或继承了抽象产品的子类

·具体工厂:提供了创建产品的方法,调用中通过调用该方法来获取产品

abstract class Car(){
    abstract fun build()
}

class ChangCheng(): Car(){
    override fun build() {
        println("build changcheng")
    }
}

class ChangAn(): Car(){
    override fun build() {
        println("build changan")
    }
}

class CarFactory{
    fun create(type: String): Car{
        return when(type){
            "changcheng" -> ChangCheng()
            else -> ChangAn()
        }
    }
}

优点

? ? ? ??把对象的创建和使用封开,更加容易拓展

缺点

? ? ? ? 新增产品时需要修改工厂类,违背了开闭原则

2,工厂方法模式

工厂方法模式完美的解决了上述缺点,遵循开闭原则

工厂方法模式包含如下角色:

·抽象工厂:提供创建产品的接口,

·具体工厂:主要是实现抽象工厂中的抽象方法,完成具体产品的创建

·抽象产品:定义了产品的规范,描述了产品的主要特征和性能

·具体产品:实现或继承了抽象产品的子类

abstract class Car(){
    abstract fun build()
}

interface CarsFactory{
    fun createCar(): Car
}

class ChangChengFactory : CarsFactory{
    override fun createCar(): Car {
        return ChangCheng()
    }
}

class ChangAnFactory: CarsFactory{
    override fun createCar(): Car {
        return ChangAn()
    }
}

class ChangCheng(): Car(){
    override fun build() {
        println("build changcheng")
    }
}

class ChangAn(): Car(){
    override fun build() {
        println("build changan")
    }
}

class Store(val factory: CarsFactory){
    fun create(): Car{
        return factory.createCar()
    }
}

优点

? ? ? ? 完美的遵循了开闭原则

缺点

? ? ? ? 新增一个产品需要增加几个类,增加了代码的复杂性

3,抽象工厂模式

简单工厂模式和工厂方法模式都是创建一类产品的模式,而抽象工厂模式是创建多个产品的模式,但是模式和工厂方法模式相同,只不过抽象工厂需要去写多个产品方法。只需仿照上面的部分进行写就好了

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-10-22 21:26:57  更:2022-10-22 21:27:11 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/20 3:25:40-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码