首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【设计模式工厂方法模式 ( 简介 | 适用场景 | 优缺点 | 代码示例 )

文章目录 一、工厂方法模式简介 二、工厂方法模式适用场景 三、工厂方法模式优缺点 四、工厂方法模式代码示例 1、产品抽象类 2、产品实现 1 3、产品实现 2 4、抽象工厂 5、实现工厂 1...6、实现工厂 2 7、测试 五、扩展上述工厂方法模式 1、扩展产品实现 2、扩展工厂实现 3、测试 一、工厂方法模式简介 ---- 工厂方法模式 : 定义一个 创建对象 接口 , 让...实现这个接口子类 决定 实例化哪个 , 工厂方法让 实例化 推迟到子类中进行 ; 工厂方法模式类型 : 创建型 ; 创建 实例对象 过程可能会很复杂 , 有可能会 导致大量重复代码 , 工厂方法模式...; /** * 工厂抽象 * 具体创建 产品对象 工厂 , 继承抽象类 * 客户端实际创建对象时 , 调用工厂子类实现 * * 该类中只有 1 个抽象方法...视频 五、扩展上述工厂方法模式 ---- 如果要扩展一个类型视频 , 如 Kotlin 视频 ; 只需要新增加一个 Vedio 子类 和 一个 VedioFactory 子类 即可 ; 1、扩展产品实现

36720

知识总结:设计模式总结(C++和Python实现)前言案例实现 创建型模式 结构型模式行为型模式对比总结

创建型 结构型 行为型 案例实现 《大话设计模式》C++版 《大话设计模式Python版 创建型模式 工厂方法模式(Factory    Method) 工厂方法模式:定义一个用于创建对象接口...桥接模式(Bridge) 对象继承关系编译时已确定,所以无法在运行时修改从父继承实现。由于紧耦合,父中任何改变必然会导致子类发生变化。...可以保证每个封装集中在单个任务上,不会出现规模太大继承结构。 桥接模式抽象类和其派生分离,各自实现自己对象。...策略模式:定义算法家族并分别封装,他们完成工作相同,只是实现不同,可以互相替换。继承有助于析取这些算法公共功能。此模式让算法变化不会影响到使用算法用户。...委托可看作函数,委托实例代表具体函数。在主题对象内声明委托,不再依赖抽象观察者。 一个委托可以搭载多个相同原形和形式(参数和返回值)方法,这些方法不需要属于一个,且被依次唤醒。

1.4K80
您找到你想要的搜索结果了吗?
是的
没有找到

快速梳理23种常用设计模式

本文旨在快速梳理常用设计模式,了解每个模式主要针对是哪些情况以及其基础特征,每个模式前都有列举出一个多个可以深入阅读参考网页,以供读者详细了解其实现。...角色 Product:抽象产品,工厂方法模式所创建对象,也就是所有产品类共同父共同拥有的接口。在实际系统中,这个角色也常常使用抽象类实现。...策略模式工厂方法异同 工厂模式策略模式区别在于实例一个对象位置不同,对工厂模式而言,实例化对象是放在服务端,即放在了工厂里面; 而策略模式实例化对象操作在客户端 工厂模式要求服务端销售部门足够灵敏...一个抽象类可以有任意多个模板方法,而不限于一个。每一个模板方法都可以调用任意多个具体方法。 基本方法 基本方法又可以分为三种 抽象方法:一个抽象方法由抽象类声明,由具体子类实现。...具体方法:一个具体方法由抽象类声明并实现,而子类并不实现置换。 钩子方法:一个钩子方法由抽象类声明并实现,而子类会加以扩展。通常抽象类给出实现一个实现,作为方法默认实现

78530

【设计模式】设计模式总结 ( 七大设计原则 | 创建型模式 | 结构型模式 | 行为型模式 ) ★★★

; 开发新功能时 , 尽量 不修改原有的代码 , 尽量 使用扩展增加新功能 ; 实现 开闭原则 核心思想 是面向抽象编程 , 不是面向实现编程 ; 定义 对象类型抽象类类型 接口类型 ,...调用方法 是 抽象类 接口 中方法 ; 抽象是 稳定 , 让依赖于抽象 , 对于修改来说就是封闭 ; 通过 面向对象 继承 , 以及 多态机制 , 可以实现 对 抽象 继承 ,...从而实现模块之间 松耦合 , 降低模块间耦合性 ; 使用依赖倒置原则时注意点 : 每个都 尽量 实现自接口 继承抽象类 ; 尽量 避免从具体派生 ; 尽量 不要覆盖基方法 ; 依赖倒置原则优点...将 创建对象过程 推迟到子类实现 , 创建对象任务 , 委托给 多个 工厂子类 中一个 , 客户端不需要关心是哪个 工厂子类 创建 产品对象 ; 工厂子类 一般都是 需要时候 , 动态指定...| 适用场景 | 优缺点 | 产品等级结构和产品族 | 代码示例 ) 抽象工厂模式 : 提供 一个 创建 一系列 相关 相互依赖 对象 接口 ; 创建目标对象时 , 只需要直到对象抽象类型接口类型即可

90030

Java设计模式面试题

1.一个可以实现多个接口 ,但却只能继承最多一个抽象类。 2.抽象类可以包含具体方法 , 接口所有方法都是抽象。...通俗解释:装饰模式就是给一个对象增加一些新功能,而且是动态,要求装饰对象和被装饰对象实现一个接口,装饰对象持有被装饰对象实例。 适配器模式:将一个接口,转换成客户期望一个接口。...首先来看看这两者定义区别: 工厂模式:定义一个用于创建对象借口,让子类决定实例化哪一个 抽象工厂模式:为创建一组相关相互依赖对象提供一个接口,而且无需指定他们具体 个人觉得这个区别在于产品...一个抽象工厂,可以派生出多个具体工厂 一个抽象工厂,可以派生出多个具体工厂 每个具体工厂只能创建一个具体产品类实例 每个具体工厂可以创建多个具体产品类实例 18.什么时候使用享元模式?...全局只允许有一个实例,比如: Runtime.getRuntime(); 5)装饰器 为一个对象动态加上一系列动作,而不需要因为这些动作不同而产生大量继承

74820

设计模式学习总结

1、适配器模式: 适用:将某个接口转换成客户端期望一个接口表示,实现接口兼容。 继承方式: 利用适配器继承目标,并实现被适配者方法,通过方法调方法实现目标调用被适配者方法。...8、装饰器模式:(Decorator) 给对象动态增加一些新功能,要求装饰对象和被装饰对象实现一个接口,装饰对象持有被装饰对象实例。 适用场景:需要扩展一个功能。...14、模板方法模式:(Template Method) 在抽象类中定义一个主方法,再定义1...n个方法,可以抽象或者实际方法,之后定义一个继承抽象类重写抽象方法,父通过调用抽象类实现对子类调用...(2)单例模式实例化一次 (3)建造者模式:用来创建复合对象,隐藏实现细节。 (4)原型模式:对象复制,减少对象创建。...(8)外观模式:将多个放到一个中,降低间耦合度。 (9)桥接模式:事物内部抽象类具体实现不同,相同方法产生不同结果,分离抽象和实体。

60430

“大话”设计模式

抽象工厂模式包括抽象工厂、具体工厂、抽象产品、具体产品4中角色。每一个具体工厂代表了一个对象族,都提供了多个工厂方法用于生产多种不同类型产品,这些产品构成了一个对象族。...单例设计模式: 单例模式确保某一个只有一个实例,而且自行实例化并向整个系统提供这个实例,这个成为单例。单例模式实现一般是构造函数私有化、自行实例一个实例并提供静态函数供整个系统访问这个实例。...一个JDBC驱动程序可以动态地将一个特定类型数据库与一个Java应用程序绑定在一起,从而实现抽象角色与实现角色动态耦合。...具体模版实现所定义一个多个抽象方法,它们是一个顶级逻辑组成步骤。...状态模式: 很多情况下,一个对象行为取决于一个多个动态变化属性,这样属性叫做状态。当一个这样对象与外部事件产生交互时,其内部状态就会改变,使得系统行为也随之发生变化。

49830

Spring原理剖析

在Java中它往往由一个具体实现 抽象产品角色:它一般是具体产品继承或者实现接口。在Java中由接口或者抽象类实现 具体产品角色:工厂所创建对象就是此角色实例。...是具体工厂角色必须实现接口或者必须继承。在java中它由抽象类或者接口来实现 具体工厂角色:它含有和具体业务逻辑有关代码。...由应用程序调用以创建对应具体产品对象 抽象产品角色:它是具体产品继承或者是实现接口。在java中一般有抽象类或者接口来实现 具体产品角色:具体工厂角色所创建对象就是此角色实例。...在java中由具体实现 工厂方法模式使用继承自抽象工厂角色多个子类来代替简单工厂模式“上帝”。...换言之,策略模式只适用于客户端知道算法行为情况 由于策略模式把每个具体策略实现都单独封装成为,如果备选策略很多的话,那么对象数目就会很可观 Spring策略模式实现 Spring 中策略模式使用有多个地方

66110

PHP 面试踩过坑(二)「建议收藏」

抽象类 (1)对抽象类使用是通过关键字extends (2)不能被实例化,可以定义子类必须实现方法 (3)子类必须定义父所有抽象方法,这些方法访问控制必须和父中一样(或者更为宽松) (4)...(7)一个可以同时实现多个接口,但一个只能继承一个抽象类3. Final/方法 (1)final不能被继承 (2)final方法不能被重写 4....策略模式三个角色: 1.抽象策略角色 2.具体策略角色 3.环境角色(对抽象策略角色引用) 实现步骤: 1.定义抽象角色(定义好各个实现共同抽象方法) 2.定义具体策略(具体实现共同方法...# 工厂模式 工厂模式是我们最常用实例化对象模式,是用工厂方法代替new操作一种模式。...使用工厂模式好处是,如果你想要更改所实例名等,则只需更改该工厂方法内容即可,不需逐一寻找代码中具体实例地方(new处)修改了。为系统结构提供灵活动态扩展机制,减少了耦合。

39220

简单工厂模式策略模式区别

对比 简单工厂模式策略模式都是三个业务子类继承抽象父,通过传入参数到容器工厂模式factory策略模式Content),选择对应进行行为操作。...实质是由一个工厂根据传入参数,动态决定应该创建并且返回哪一个产品类(这些产品类继承一个接口)实例。...从工厂模式代码中可以看到 工厂模式主要是返回接口实现实例化对象,最后返回结果是接口实现方法,而策略模式是在实例策略模式时候已经创建好了,我们可以再策略模式中随意拼接重写方法,而工厂模式是不管方法拼接这些...工厂模式调用方可以直接调用工厂实例方法属性等,策略模式不能直接调用实例方法属性,需要在策略中封装策略后调用。...策略模式将不同算法封装成一个对象,这些不同算法从一个抽象类或者一个接口中派生出来,客户端持有一个抽象策略引用,这样客户端就能动态切换不同策略

4.7K31

一文了解设计模式常见面试知识点

第五种是枚举,枚举底层实现其实也是内部类。枚举确保每个对象在全局是唯一。所以保证它是单例,这个方法是最简单工厂模式 简单工厂一般是用一个工厂创建多个实例。...工厂模式一般是指一个工厂服务一个接口,为这个接口实现进行实例化 抽象工厂模式是指一个工厂服务于一个产品族,一个产品族可能包含多个接口,接口又会包含多个实现,通过一个工厂就可以把这些绑定在一起,非常方便...代理模式 我们发现没有,代理模式说白了就是做 “方法包装” 做 “方法增强”。 在面向切面编程中,算了还是不要吹捧这个名词了,在 AOP 中, 其实就是动态代理过程。...策略模式 策略模式一般把一个策略作为一个,并且在需要指定策略时候传入实例,于是我们可以在需要使用算法地方传入指定算法。 命令模式 命令模式一般分为命令发起者,命令以及命令接受者三个角色。...模板方法模式 模板方法一般指提供了一个方法模板,并且其中有部分实现和部分抽象类,并且规定了执行顺序。 实现是模板提供好方法。而抽象类则需要用户自行实现

31720

设计模式常见面试知识点总结

第五种是枚举,枚举底层实现其实也是内部类。枚举确保每个对象在全局是唯一。所以保证它是单例,这个方法是最简单工厂模式 简单工厂一般是用一个工厂创建多个实例。...工厂模式一般是指一个工厂服务一个接口,为这个接口实现进行实例化 抽象工厂模式是指一个工厂服务于一个产品族,一个产品族可能包含多个接口,接口又会包含多个实现,通过一个工厂就可以把这些绑定在一起,非常方便...代理模式 我们发现没有,代理模式说白了就是做 “方法包装” 做 “方法增强”。 在面向切面编程中,算了还是不要吹捧这个名词了,在 AOP 中, 其实就是动态代理过程。...策略模式 策略模式一般把一个策略作为一个,并且在需要指定策略时候传入实例,于是我们可以在需要使用算法地方传入指定算法。 命令模式 命令模式一般分为命令发起者,命令以及命令接受者三个角色。...模板方法模式 模板方法一般指提供了一个方法模板,并且其中有部分实现和部分抽象类,并且规定了执行顺序。 实现是模板提供好方法。而抽象类则需要用户自行实现

42340

iOS 常用设计模式汇总

1.1.3控制器对象 在应用程序一个多个视图对象和一个多个模型对象之间,控制器对象充当媒介。控制器对象因此是同步管道程序,通过它,视图对象了解模型对象更改,反之亦然。...5.5注意事项 1、剥离中易于变化行为,通过组合方式嵌入抽象基 2、变化行为抽象基为,所有可变变化 3、用户最终实例,通过注入行为实例方式,设定易变行为 防止了继承行为方式,导致无关行为污染子类...完成了策略封装和可替换性。 六、简单工厂模式 简单工厂模式中定义一个抽象类抽象类中声明公共特征及属性,抽象子类继承抽象类,去实现具体操作。...6.1应用场景 工厂方式创建实例,多与proxy模式配合,创建可替换代理。 6.2优势 易于替换,面向抽象编程,application只与抽象工厂和易变共性抽象类发生调用关系。...6.3敏捷原则 DIP依赖倒置原则 6.4实例 项目部署环境中依赖多个不同类型数据库时,需要使用工厂配合proxy完成易用性替换 6.5注意事项 项目初期,软件结构和需求都没有稳定下来时,不建议使用此模式

1.7K10

设计模式常见面试知识点总结(Java版)

工厂模式 简单工厂一般是用一个工厂创建多个实例。...工厂模式一般是指一个工厂服务一个接口,为这个接口实现进行实例化 抽象工厂模式是指一个工厂服务于一个产品族,一个产品族可能包含多个接口,接口又会包含多个实现,通过一个工厂就可以把这些绑定在一起,非常方便...适配器模式和代理模式异同 比较这两种模式,其实是比较对象适配器模式和代理模式,在代码结构上, 它们很相似,都需要一个具体实现实例。... 策略模式 策略模式一般把一个策略作为一个,并且在需要指定策略时候传入实例,于是我们可以在需要使用算法地方传入指定算法。... 模板方法模式 模板方法一般指提供了一个方法模板,并且其中有部分实现和部分抽象类,并且规定了执行顺序。 实现是模板提供好方法。而抽象类则需要用户自行实现

34200

设计模式常见面试知识点总结

第五种是枚举,枚举底层实现其实也是内部类。枚举确保每个对象在全局是唯一。所以保证它是单例,这个方法是最简单工厂模式 简单工厂一般是用一个工厂创建多个实例。...工厂模式一般是指一个工厂服务一个接口,为这个接口实现进行实例化 抽象工厂模式是指一个工厂服务于一个产品族,一个产品族可能包含多个接口,接口又会包含多个实现,通过一个工厂就可以把这些绑定在一起,非常方便...代理模式 我们发现没有,代理模式说白了就是做 “方法包装” 做 “方法增强”。 在面向切面编程中,算了还是不要吹捧这个名词了,在 AOP 中, 其实就是动态代理过程。...策略模式 策略模式一般把一个策略作为一个,并且在需要指定策略时候传入实例,于是我们可以在需要使用算法地方传入指定算法。 命令模式 命令模式一般分为命令发起者,命令以及命令接受者三个角色。...模板方法模式 模板方法一般指提供了一个方法模板,并且其中有部分实现和部分抽象类,并且规定了执行顺序。 实现是模板提供好方法。而抽象类则需要用户自行实现

63030

Java基础教程(19)-设计模式简述

调用方尽量持有接口抽象类,避免持有具体类型子类,以便工厂方法能随时切换不同子类返回,却不影响调用方代码 抽象工厂模式是为了让创建工厂和一组产品与使用相分离,并可以随时切换到另一个工厂以及另一组产品...; 生成器模式(Builder)是使用多个“小型”工厂来最终创建出一个完整对象。...原型模式是根据一个现有对象实例复制出一个实例,复制出类型和属性与原实例相同。...单例模式(Singleton)目的是为了保证在一个进程中,某个有且仅有一个实例 结构型模式主要涉及如何组合各种对象以便获得更好、更灵活结构。...虽然面向对象继承机制提供了最基本子类扩展父功能,但结构型模式不仅仅简单地使用继承,而更多地通过组合与运行期动态组合来实现更灵活功能。

14010

23种设计模式汇总概述

使用场景: 不希望不适用使用继承场景 接口抽象类不稳定场景 重用性要求较高场景 注意: 发现继承有N层时,可以考虑使用桥梁模式。桥梁模式主要考虑如何拆分抽象和实现。...覆写实现方法时输出结果可以被缩小 父一个方法返回值是一个类型T,子类相同方法(重载覆写)返回值为S,那么里氏替换原则就要求S必须小于等于T,也就是说,要么S和T是同一个类型,要么S是...只要遵循以下几个规则就可以: ①每个尽量都有接口抽象类,或者抽象类和接口两者都具备 ②变量表面类型尽量是接口或者是抽象类 ③任何都不应该从具体派生(只要不超过两层继承是可以忍受)...使用场景: 需要扩展一个功能,一个增加附加功能。 需要动态地给一个对象增加功能,这些功能可以再动态地撤销。 需要为一批兄弟进行改装加装功能,当然是首选装饰模式。...ConcreteStrategy具体策略角色(多个实现抽象策略操作,该类含有具体算法。 使用场景: 多个只有在算法行为上稍有不同场景。 算法需要自由切换场景。

25810

深入理解Java多态:灵活性与可扩展性完美结合

通过定义通用接口抽象类多个具体实现可以共享相同代码,从而减少代码冗余。...这些模式通过接口抽象类定义了通用行为,并允许具体实现进行替换。...多态性通过封装实现了对象行为多样性,使得相同操作可以作用于不同对象。 3. 抽象 抽象是指提取对象共性,并定义通用接口抽象类。...方法重写和方法重载区别 方法重写是子类重新定义父方法,是一种动态多态;方法重载是同一个中定义多个参数不同方法,是一种静态多态。 2. 类型转换 在使用多态时,可能需要进行类型转换。...在运行时,通过多态性调用具体makeSound方法。 2. 形状绘制程序 通过定义一个通用Shape接口抽象类,并让不同形状实现继承,可以实现一个灵活形状绘制程序。

11910

七大原则+23种设计模式

,或者两者都有,程序稳定性更好 变量声明类型尽量是抽象类接口, 这样我们变量引用和实际对象间,就存在 一个缓冲层,利于程序扩展和优化 继承时遵循里氏替换原则 1.4 里氏替换原则 大白话解释:少继承...UML图 点击此处进行学习 3. 设计模式 设计模式分为三种类型,共23种 创建型模式:单例模式工厂模式、抽象工厂模式、原型模式、建造者模式。...工厂模式多个创建交给一个工厂,客户端给出所需类型工厂返回该对象 抽象工厂模式:给每一产品都创建一个工厂 原型模式:利用一个对象本体(称为原型),克隆出另一个 建造者模式一个对象创建过程比较复杂...解释器模式:解释一串表达式 状态模式一个流程存在特别多状态,使用状态模式 策略模式:把某一方法(策略)抽出来作为实现动态改变 职责链模式(责任链模式):拦截链,轮着一个一个 3.1单例模式...提供了比继承更有弹性替代方案(扩展原有对象功能) 优点 扩展一个功能或者给一个添加附加职责 给一个对象动态添加功能,动态撤销功能。 ?

3K22

Java设计模式 笔记

实现了抽象产品角色所定义接口,由具体工厂来创建,它同具体工厂之间 一一对应 抽象工厂模式 抽象工厂模式工厂方法模式升级版本,工厂方法模式只生产一个等级产品,而抽象工厂模式可生产多个等级产品...接口适配器模式也称作缺省适配模式,就是有时候一个接口方法太多,我只想用其中一两个,不想为其他方法提供实现,就可以通过一个抽象类为这个接口所有方法,提供空实现,如果想用哪个方法,再提供一个子类继承这个抽象类...结构 抽象策略(Strategy):是一个抽象角色,通常由一个接口抽象类实现。...此角色给出所有的具体策略所需接口 具体策略(ConcreteStrategy):实现了抽象策略定义接口,提供具体算法实现行为 环境(Context):持有一个策略引用,最终给客户端调用...系统中各算法彼此完全独立,且要求对客户隐藏具体算法实现细节时 系统要求使用算法客户不应该知道其操作数据时,可使用策略模式来隐藏与算法相关数据结构 多个只区别在行为不同,可以使用策略模式,在运行时动态选择要执行行为

72610
领券