工厂设计模式浅析

作者&投稿:齐昆 (若有异议请与网页底部的电邮联系)
~

就像六大原则一样,每一种设计模式也都是一种思想,而不是一种特定的形式,所以要灵活求变。这次简单分析一下工厂设计模式在实际开发当中的应用。工厂设计模式分为三大类: 简单工厂、工厂方法、抽象工厂 。而工厂方法又分为两种形式:单工厂形式和多工厂形式。这次将结合数据存储的三种类型,对工厂模式的各个形式来分析一下。这三种类型分别是内存存储(LRUCache)、SharedPreferece、Disk磁盘存储,它们将作为产品由工厂生产。

下面我们先定义一个产品存取数据的接口,它将作为三种类型的数据存储的规范。

上面定义了 String 、int、boolean三种数据类型存取的抽象方法,这里可以扩展。然后我们分别定义三种数据存储类型的实现类:

上面 MemoryHandler 继承自 ISaveHandler ,实现LruCache 内存缓存。

上面 SharedPreferenceHandler 继承自 ISaveHandler ,实现SharedPreference 缓存。还有磁盘缓存就不写了,有兴趣的可以自己扩展。这里主要讲解一下工厂设计模式。下面开始写简单工厂,简单确实也很简单,一个工厂一个switch语句:

上面就是通过传入的枚举类型生成相应的存储对象。不多说,看一下用法吧:

这种枚举类型的简单工厂模式好处就是清楚明了类型少,没那么多拐弯抹角。不好的地方就是,当数据存储类型(产品类型)需要扩展的时候,需要改动工厂。下面我们来看一下第二种:工厂方法模式。

开头说了,工厂方法模式由两种形式,一种是多工厂形式,一种是单工厂形式。

上面我们看到了一个工厂里面一个方法,就用于生成 SharedPreference形式的存储。如果要生成其他形式的存储,那么就再造一个相应的工厂。别的工厂这里就不贴出来了。其实这种方式更加一目了然,但缺点也很一目了然,就是工厂贼多。那下面就看一下工厂比较少的形式。

上面就是通过类型,然后反射获取存储类型的对象。这种模式和简单工厂有点类似,只不过这里不需要维护枚举类。当需要扩展数据存储方式时,只需要增加数据存储类型就可以了,并不需要改变工厂。这种方式应该是应用最广泛的一种工厂模式。下面再简单看下它的使用吧:

抽象工厂模式其实和工厂方法的多工厂模式有点类似,容易混淆。这两者的区别是,单工厂方法模式下,一个工厂只能生产一个产品,而抽象工厂模式下,一个工厂需要生产一组产品。比如我这里需要一个工厂能同时生产内存存储对象和SharedPreferece对象。或者,一个工厂能同时生产内存存储对象和磁盘存储对象等等。在实际开发过程中,如果用到了这种抽象工厂模式,那么一般来说,一个工厂能生产的这两个对象之间会有一定的关联性。比如说汽车工厂,它能同时生产出轴承和轮胎,这两者关系就很密切。下面看一下抽象工厂模式:

上面一个工厂可以生产两种产品,当然,上面例子里面工厂的两种产品木有很强的关联。刚才说了,使用到这种抽象工厂方式时,一般一个工厂的产品之间会有一定的关联。就像汽车的轴承和轮胎。相对来说,在日常的开发当中,工厂方法模式可能应用的更广泛一些。
Demo: Factory




设计模式有哪些
设计模式主要分为以下几种:工厂模式 工厂模式是创建对象的一种设计模式。它使用一个共同的接口来创建不同类型的对象,而无需直接使用具体类来创建对象。工厂模式分为简单工厂模式、工厂方法模式和抽象工厂模式。这种方式的主要优点是可以在运行时根据需要动态创建对象,同时隐藏了具体实现细节。单例模式 单...

工厂模式,简单工厂模式,抽象工厂模式三者有什么区别
在面向对象设计中,工厂模式、简单工厂模式和抽象工厂模式是三种不同的设计模式,它们在创建对象、定义变量和接口数量上有所不同。首先,从对象创建角度来看,工厂模式提供一个统一的接口,通过这个接口来创建对象,无需直接使用new关键字。简单工厂模式则通过一个工厂类根据传入的参数或配置来创建特定产品,...

设计模式-工厂方法模式和抽象工厂模式
设计模式中的两种工厂方法,工厂方法模式和抽象工厂模式,分别用于不同场景的生产和管理。工厂方法模式主要关注单个等级产品的生产,它定义了一个工厂接口,将产品创建工作留给子类。优点是用户只需知道工厂名即可获取产品,增加新产品时仅需添加对应工厂和产品,但缺点是产品类与工厂类关系紧密,扩展性有限。

简单设计模式--三大工厂模式
在软件设计中,工厂模式是一种重要的创建对象策略,它分为简单工厂模式、工厂方法模式和抽象工厂模式三种。每种模式都有其特定的应用场景和优势。简单工厂模式,当只有一个工厂类负责创建所有产品时,它提供了简单且统一的接口。工厂方法模式则适用于每个产品对应一个特定工厂的场景,这样既保持了灵活性又...

java有哪些设计模式
Java常见的设计模式有:工厂模式、单例模式、构建者模式、观察者模式、适配器模式、策略模式等。设计模式是软件开发中解决特定问题的最佳实践,有助于提高代码的可维护性和可扩展性。下面是部分设计模式的详细解释:工厂模式:工厂模式是创建对象的一种设计模式,其核心思想是将对象的创建与使用分离。这样...

常见设计模式有哪些
常见的设计模式有:工厂模式、单例模式、观察者模式、适配器模式、策略模式等。设计模式是指在软件开发中,针对特定问题的最佳解决方案的一种描述。这些模式经过了广泛的实践验证,有助于我们更有效地复用代码,提高软件的可维护性和可复用性。下面是几个常见的设计模式的简单介绍:1. 工厂模式:主要用于...

spring动态数据源使用到的设计模式
spring动态数据源使用到的设计模式有工厂模式、单例模式、代理模式、模板模式、观察者模式等。1、工厂模式 工厂模式是Java中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来...

简单工厂模式优缺点
简单工厂模式是一种常用的软件设计模式,其核心在于工厂类,它根据外界提供的信息,决定并创建特定的实例。这种模式的优势在于,它将对象的创建逻辑封装在工厂类中,使得客户端只需关注“消费”对象,而不必关心其实现细节,从而提升了代码的可维护性和软件体系结构的优化。各个组件之间的职责明确,有助于...

Spring中的设计模式:工厂方法模式
2. 提高代码的可维护性:当需要添加新的对象时,只需添加一个类,并实现工厂方法即可,无需修改现有代码,提高了代码的可维护性。3. 易于扩展:工厂方法模式支持动态添加新的产品类,只需扩展工厂类即可,无需修改现有系统结构。工厂方法模式的升级:随着软件架构和设计模式的发展,工厂方法模式也经历了...

常用设计模式概览:提高程序可维护性和可扩展性的秘密武器?
工厂方法模式是一种用于创建对象的设计模式。它定义了一个接口来创建对象,并由子类来实现这个接口,从而创建出不同的对象。这样,我们就可以在不暴露对象创建细节的情况下创建对象。工厂方法模式可以帮助我们解决创建对象时的复杂性。 2、抽象工厂模式(Abstract Factory) 抽象工厂模式是工厂方法模式的一种扩展。它可以帮助...

裕民县17255088946: 设计模式,求工厂模式原理. -
顾丽枫蓼: 工厂模式包括简单工厂模式、工厂方法模式和抽象工厂模式.无论是哪种工厂模式实际上都是OCP(Open-Closed Principle)原理的具体应用.OCP即对扩展开放,对修改关闭.所以要理解和运用工厂模式最重要的是弄清楚OCP原则.当然更准确地说,简单工厂模式并不能完全体现OCP的原理,但可以认为其是由无OCP设计向有OCP设计的过渡.初学者不要纠结于设计模式本身,而应该从OO(面向对象)设计的基本原则或原理学起.实际上当你能够完全理解OOD的原理后,设计模式就非常好理解了,甚至你可以推导出来设计模式或其实例化场景化的变体.

裕民县17255088946: Java中常用的设计模式有哪些?请详细说明一下工厂模式. -
顾丽枫蓼: 一共23种设计模式!引用《软件秘笈-设计模式那点事》书籍:按照目的来分,设计模式可以分为创建型模式、结构型模式和行为型模式. 创建型模式用来处理对象的创建过程;结构型模式用来处理类或者对象的组合;行为型模式用来对类或...

裕民县17255088946: 设计模式中的工厂模式详述
顾丽枫蓼: 工厂模式包括简单工厂、工厂和抽象工厂,复杂程度不同,适用于不同场景,具体参看下面的博文: http://hi.baidu.com/%C7%C6%C0%B4%C7%C3%C8%A5/blog/item/4d0047271614401e8b82a1f9.html

裕民县17255088946: 模式设计,您对工厂模式有哪些理解呢? -
顾丽枫蓼: 个人理解,工厂模式就是减少代码耦合的一种设计方式,更易于维护,例如:public class person{ person(int i){ if(i==1) return new chinese (); if(i==2) return new chinese (); } } class chinese extends person{ } class american extends person{ } 这样在你调用的时候,不用关心具体实现类,直接new person(1)或new person(2)就可以了,这应该是最简单的,复杂点你可以写成抽象类、实现类,工厂这样的

裕民县17255088946: 工厂模式是什么??
顾丽枫蓼: 工厂模式具体包括了简单工厂、工厂方法、抽象工厂,它们是按照从简单到复杂的顺序排列的,属于设计模式中的创建型,其中简单工厂并不属于GOF的23中模式.但是它是理解其它的工厂模式的一个很好的基础,所以很多人在讲述设计模式的时候会提到简单工厂模式.创建型模式关注的是对象的创建,创建型模式将创建对象的过程进行了抽象,也可以理解为将创建对象的过程进行了封装,作为客户程序仅仅需要去使用对象,而不再关心创建对象过程中的逻辑.

裕民县17255088946: 在设计模式中什么是工厂方法模式 -
顾丽枫蓼: 工厂方法模式(FACTORY METHOD)是一种常用的对象创建型设计模式,此模式的核心精神是封装类中不变的部分,提取其中个性化善变的部分为独立类,通过依赖注入以达到解耦、复用和方便后期维护拓展的目的.它的核心结构有四个角色,分别是抽象工厂;具体工厂;抽象产品;具体产品

裕民县17255088946: j2ee常用的设计模式?说明工厂模式.
顾丽枫蓼: Java中的23种设计模式: Factory(工厂模式), Builder(建造模式), Factory Method(工厂方法模式), Prototype(原始模型模式),Singleton(单例模式), Facade(门面模式), Adapter(适配器模式), Bridge(桥梁模式), ...

裕民县17255088946: 什么是PHP中的工厂设计模式 -
顾丽枫蓼: 工厂模式分为三种:简单工厂、工厂方法、抽象工厂 ,三种工厂的区别是,抽象工厂由多条产品线,而工厂方法只有一条产品线,是抽象工厂的简化.而工厂方法和简单工厂相对,大家初看起来好像工厂方法增加了许多代码但是实现的功能和简单工厂一样.但本质是,简单工厂并未严格遵循设计模式的开闭原则,当需要增加新产品时也需要修改工厂代码.但是工厂方法则严格遵守开闭原则,模式只负责抽象工厂接口,具体工厂交给客户去扩展.在分工时,核心工程师负责抽象工厂和抽象产品的定义,业务工程师负责具体工厂和具体产品的实现.只要抽象层设计的好,框架就是非常稳定的.

裕民县17255088946: 简单工厂模式的介绍 -
顾丽枫蓼: 简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一.简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例.简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现.

裕民县17255088946: 使用工厂模式对于设计软件有什么好处? 工厂模式为什么叫做工厂模式? -
顾丽枫蓼: 使用工厂模式最大的好处是解耦合最开始创建对象是用new,就是原始社会要用斧头得自己造,这是最不好的进入工业社会,也就是所说的工厂模式,有了工厂,工厂可以生产斧头,直接可以从工厂买当然更高级的是控制反转,也叫依赖注入,从配置文件中配置,相当于进入社会主义了,有人直接把斧头送到你手上,对象就这么生成出来了,明白为什么要用工厂模式了吧?

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网