`

设计模式-创建型-工厂-简单工厂模式

    博客分类:
  • java
阅读更多

一、姑且用一个这样的图表示一下:

 二、简单工厂的基本简介:百度释义:又叫静态工厂方法,不属于那23种设计模式之一。

  动态决定哪个类被实例化,不必事先知道哪个类要被实例化!

 

三、举例:QQ里面常用发表情的:

           1、 表情 b=new Smile();//这种应该是很熟悉的创建方式

            2、表情 b=表情工厂.createBiaoQing(“表情内容”);

 

四、角色与结构:


 工厂类角色(creator):BQFctory,在creat方法下创建产品对象(smile,cry);

抽象产品角色(product):BiaoQing;定义简单工厂创建的对象的父类或它们共同拥有的接口。可以是一个类、抽象                     类或接口。(我这里是一个接口);

具体产品角色concreateproduct:Smile,Cry;工厂具体产出的对象。

 

 

五、根据代码分析:

   BiaoQing接口,仅需定义所需要的方法 

 

package SimpleFctory;
public interface BiaoQing {
	public void show();
}

 

 

Smile类实现BiaoQing中的方法

  package SimpleFctory;

public class Smile implements BiaoQing{
	public void show() {
		System.out.println("smile的显示方法");
	}
}

 

Cry类实现BiaoQing中的方法

package SimpleFctory;
public class Cry implements BiaoQing{
	public void show() {
		System.out.println("cry的显示方法");
	}
}

 

BQFctory的create方法的返回类型是BiaoQing,然后根据括号内的内容返回不同的类型

package SimpleFctory;
public class BQFctory {
	public static BiaoQing create(String type){//为了方便调用,我们在这里将其方法设为公开静态的
		if(type.equals("smile")){//根据创建方法后的类型来判断需要返回什么类型
			return new Smile();
		}else if(type.equals("cry")){
			return new Cry();
		}else
			return null;
	}
}

 

测试:

package SimpleFctory;
public class Test {
	public static void main(String[] args) {
		BiaoQing b1=BQFctory.create("smile");
		b1.show();
		BiaoQing b2=BQFctory.create("cry");
		b2.show();
	}
}
 结果:smile的显示方法

          cry的显示方法


我们反过来,从主程序开始看就很好理解了,首先调用BQFctory里的静态方法create,根据方法提供的type返回所需要的类型,然后调用相应的方法!

 

六、优点:

1、不必事先知道哪个类要被实例化

2、只需在需要的地方调用即可,无需像 “ 表情 b=new Smile() "这样重新实例化一个对象,方便,同时也节省了内存!

 

七、缺点:

1、由于所需要的具体产品待定,如果很多的话就要重新添加新的类,并且要在工厂类(此例中的BQFctory类)中添加判断语句,扩展比较麻烦,好像违背了OOP的开闭原则吧!所以最好是用在所需创建的对象比较少的情形上!

 

 

就这么点理解了!

  • 大小: 5.8 KB
  • 大小: 4.5 KB
0
1
分享到:
评论

相关推荐

    JAVA-设计模式-创建型模式-工厂模式

    JAVA-设计模式-创建型模式-工厂模式

    3.java设计模式-创建者模式-抽象工厂模式.pdf

    简单工厂模式则是创建型设计模式的另一种,它提供一个创建对象的接口,但是让子类决定实例化哪一个类。它负责创建所有可能的类的实例,一般被用来创建某一类产品。 在上述组装电脑的场景下,简单工厂模式可以帮助...

    1.java设计模式-创建者模式-简单工厂模式.pdf

    简单工厂模式是Java设计模式中创建型模式的一种,也被称为静态工厂方法模式。该模式的主要思想是由一个专门的工厂类来负责创建其他类的实例。简单工厂模式通过封装创建对象的过程,使得调用者无需关心对象的具体创建...

    创建型设计模式---工厂设计模式实现

    创建型设计模式---工厂设计模式实现

    设计模式-简单工厂源码

    C++设计模式-创建型模式-简单工厂模式源码

    创建型设计模式----抽象工厂模式

    抽象工厂模式是创建型设计模式的一种,它提供了一种创建对象族(一组具有相互依赖关系的对象)的方法,而无需指定具体类。这种模式的核心在于它允许客户端代码与具体实现细节解耦,使得更换一个产品族变得更为容易。...

    设计模式-创建型模式、结构型模式和行为型模式

    按照不同的功能特性,设计模式可以分为三大类:创建型模式、结构型模式和行为型模式。 #### 二、创建型模式 创建型模式主要用于解决对象创建的过程,旨在简化对象创建的复杂度,同时保持对象创建的灵活性。主要...

    最新设计模式超级详解+Tomcat架构源码分析+Spring源码分析 资深级设计模型课程

    最新设计模式超级详解课程,课程深入浅出的探讨了设计模式总览,创建型模式、结构型模式、行为模式的...├─day01-总览设计模式-06-创建型模式-工厂-简单工厂模式.mp4 ├─day01-总览设计模式-07-创建型模式-工厂-工厂

    设计模式1-创建型模式

    "设计模式1-创建型模式" 设计模式是软件设计中的一种解决方案,它提供了一种通用的设计方案,解决了面相对象系统中重复出现的设计问题。设计模式的学习和运用对软件系统开发有着非常重要的意义,它可以帮助开发者更...

    设计模式--抽象工厂模式实现多数据库连接

    抽象工厂模式是设计模式中的一种创建型模式,它提供了一个创建对象族的接口,而无需指定它们的具体类。在.NET开发中,这种模式常用于实现多数据库连接,比如连接到MySQL、SQL Server或Oracle等不同的数据库系统。...

    JAVA设计模式(01):创建型-工厂模式【简单工厂模式】(Simple Factory)

    **简单工厂模式**是软件设计模式中的一种,属于创建型模式。在Java编程中,它是一种用于创建对象的简便方法,将对象的实例化过程封装到一个单独的工厂类中,使得客户端代码无需直接调用具体类的构造函数,而是通过...

    C++设计模式--基于Qt4开源跨平台开发框架

    创建型模式如单例模式(Singleton)、工厂模式(Factory Method)和抽象工厂模式(Abstract Factory),主要关注对象的创建过程,旨在减少类之间的耦合度。结构型模式如适配器模式(Adapter)、装饰器模式...

    c++设计模式-工厂方法模式

    工厂方法模式是面向对象设计模式中的一个创建型模式,它提供了一种封装对象创建过程的方式,使得具体的对象创建过程可以延迟到子类中进行。在C++编程中,工厂方法模式广泛应用于各种软件设计中,因为它能有效地解耦...

    设计模式----简单工厂模式

    简单工厂模式是软件设计模式中的一种基础模式,它属于创建型模式,主要解决对象的创建问题,使得代码在创建对象时更加灵活,同时也隐藏了对象的创建细节。在这个模式中,一个专门的工厂类负责创建特定类型的对象,而...

    一例读懂设计模式-单例模式、简单工厂模式.zip

    简单工厂模式是一种创建型设计模式,它提供一个工厂类来负责创建对象,而不是让客户端代码直接创建。这样,客户端可以避免知道具体类的细节,只需调用工厂方法即可获取所需对象。 - 工厂类:包含一个或多个用于...

    23种设计模式-创建型模式.docx

    ### 23种设计模式之创建型模式 #### 一、单例模式(Singleton) **定义**:确保一个类只有一个实例,并提供一个全局访问点。 **实现方式**: 1. **饿汉式**:在类装载时即创建唯一实例。 - **优点**:线程安全,...

    北风网-设计模式-简单工厂模式ppt

    简单工厂模式是面向对象设计模式中的一种,它属于创建型模式,主要解决的是在系统中如何创建对象的问题。设计模式是软件开发中的经验总结,旨在提高代码的可重用性、可读性和可维护性。 在简单工厂模式中,一个工厂...

Global site tag (gtag.js) - Google Analytics