这段时间研究了一下Spring对单态与工厂模式的实现,学习资料仍是李刚老师的《轻量级J2EE企业应用实战》。现在,我终于对“Spring中单态与工厂模式的实现”有了一个自认为还不错的认识,并能作出一些例子来了。下面贴出来与大家分享。
Spring提供工厂模式的实现,Spring容器是最大的工厂,而且是个功能超强的工厂。Spring使用配置文件管理所有的bean,配置文件中bean由Spring工厂负责生成和管理。下面是关于两个实例的配置文件:
<!-- 下面是xml文件的文件头-->
<?xml version="1.0" encoding="gb2312"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<!-- beans是Spring配置文件的根元素-->
<beans>
<!-- 定义第一个bean,该bean的id为chinese->
<bean id="chinese" class="lee.Chinese"/>
<!-- 定义第二个bean,该bean的id为american-->
<bean id="american" class="lee.American"/>
</beans>
主程序部分如下:
public class SpringTest
{
public static void main(String[] args)
{
//实例化Spring容器
ApplicationContext ctx = new FileSystemXmlApplicationContext("bean.xml");
//定义Person接口的实例
Person p = null;
//通过Spring上下文获得chinese实例
p = (Person)ctx.getBean("chinese");
//执行chinese实例的方法
System.out.println(p.sayHello("wawa"));
System.out.println(p.sayGoodBye("wawa"));
//通过Spring上下文获得american实例
p = (Person)ctx.getBean("american");
//执行american实例的方法
System.out.println(p.sayHello("wawa"));
System.out.println(p.sayGoodBye("wawa"));
}
}
使用Spring至少有一个好处:即使没有工厂类PersonFactory,程序一样可以使用工厂模式。所有工厂模式的功能,Spring完全可以提供。
下面对主程序部分做出简单的修改:
public class SpringTest
{
public static void main(String[] args)
{
//实例化Spring容器
ApplicationContext ctx = new FileSystemXmlApplicationContext("bean.xml");
//定义Person接口的实例p1
Person p1 = null;
//通过Spring上下文获得chinese实例
p1 = (Person)ctx.getBean("chinese");
//定义Person接口的实例p1
Person p2 = null;
p2 = (Person)ctx.getBean("chinese");
System.out.println(p1 == p2);
}
}
程序执行结果是:
true
表明:Spring对接受容器管理的全部bean,默认采用单态模式管理。除非必要,建议不要随便更改bean的行为方式:性能上,单态的bean比非单态的bean更优秀。
仔细检查上面的代码,发现如下特点:
1.除测试用主程序部分,代码并未出现Spring特定的类和接口。
2.调用者代码,也就是测试用主程序部分,仅仅面向Person接口编程。而无需知道实现类的具体名称。同时,可以通过修改配置文件来切换底层的具体实现类。
3.工厂无需多个实例,因此,工厂应该采用单态模式设计。Spring的上下文,也就是Spring工厂,已被设计成单态的。
Spring工厂模式,不仅提供了创建bean的功能,还提供对bean生命周期的管理。最重要的是:还可管理bean与bean之间的依赖关系。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/scott_gl/archive/2007/11/23/1899700.aspx
分享到:
相关推荐
简单工厂模式又叫静态工厂模式,顾名思义,它是用来实例化目标类的静态类。下面我主要通过一个简单的实例说明简单工厂及其优点。 单态模式的定义: Singleton模式主要作用是保证在Java应用程序中,一个类Class只有...
单态模式和工厂模式是两种常见的设计模式,在软件开发中有着广泛的应用。它们各自解决了不同的问题,但在确保对象创建和管理方面提供了有力的支持。 **单态模式(Singleton Pattern)** 单态模式是一种创建型设计...
单态模式(Singleton Pattern)和简单工厂模式(Simple Factory Pattern)是软件设计中常见的两种创建型设计模式。在Java编程中,它们都是为了简化对象的创建过程,但各自有着不同的应用场景和特点。 单态模式是一...
单态模式(Singleton Pattern)是软件设计模式中的一种,它保证了类只有一个实例,并提供一个...因此,在设计系统时,应谨慎使用单态模式,并考虑其他设计模式,如工厂模式或依赖注入,以保持代码的灵活性和可扩展性。
- 实现单态登录也可以借助成熟的SSO框架,如Spring Security、CAS(Central Authentication Service)等。这些框架提供了丰富的功能和自定义选项,能够简化开发过程。 综上所述,Java实现的单态登录涉及单态模式、...
通过上述的教学过程设计,学生不仅能够理解单态设计模式的基本原理,还能了解到其实现的具体步骤及其在实际项目中的应用场景。更重要的是,这种方法能够帮助学生建立起面向对象编程的思想,为他们未来的学习和发展...
在Java中,单态模式的实现通常有两种常见方式:饿汉式和懒汉式。饿汉式是在类加载时就完成了初始化,所以类加载比较慢,但获取对象的速度快,线程安全。而懒汉式是在类被加载后,第一次调用getInstance方法时才初始...
其中,Spring的核心设计理念体现在对两种基本设计模式的实现上:工厂模式和单态模式。 首先,工厂模式是Spring容器的核心。Spring作为一个bean工厂,负责管理和实例化应用中的各种bean。它遵循工厂模式的原则,使得...
单态模式和简单工厂模式.doc
在C#中实现单态模式,通常有几种常见的方法: 1. **懒汉式**:延迟初始化,只有在第一次使用时才会创建实例。 ```csharp public sealed class Singleton { private static readonly Lazy<Singleton> instance = ...
Java设计模式是软件开发中的重要概念,它们是解决常见...这个压缩包资料“[浪曦原创]JAVA设计模式 第2讲 单态模式和简单工厂模式(jzkangta)”应包含了详细的讲解和示例代码,可以帮助深入理解和应用这两种设计模式。
与单例模式不同,单例模式将类限制为单个实例,单态模式允许存在多个实例,但确保它们都具有共享状态。 ## 二、详细解释及实际示例 1. **实际示例**: - 想象一个图书馆有多个书桌,读者可以在这些书桌上访问图书...
在某些情况下,两者可以结合使用,比如一个单态工厂类负责创建其他对象。 总之,单态模式在.NET开发中扮演着重要角色,尤其是在三层架构中,能够优化资源管理,简化代码结构,提高程序的可维护性和扩展性。理解和...
下面将详细阐述单态模式的原理及其在MFC中的实现。 1. **单态模式的基本概念** - **单一实例**:保证一个类只有一个实例,避免多个实例造成的资源浪费和状态不一致。 - **全局访问点**:提供一个全局的静态方法,...
9. **Spring Security**:在Java Web开发中,Spring Security是一个强大的安全框架,提供了单态登录的实现。通过配置它可以轻松地实现SSO功能,包括基于JWT(JSON Web Tokens)的身份验证和授权。 10. **Cookie与...
单态模式(Singleton Pattern)是设计模式中的一种基础模式,主要用来确保一个类只有一个实例,并提供一个全局访问点。在软件工程中,当一个类只能有一个实例而且客户可以从一个众所周知的访问点访问它时,这样的...
在Java或其他面向对象语言中,单态模式的实现有多种方式,但核心思想都是限制类的实例化过程。 一、单态模式的基本结构 单态模式通常包含以下关键部分: 1. 单例类:这个类只能被实例化一次,它负责创建自己的唯一...
在Java中,实现单态模式主要有两种方式: 1. **饿汉式(Eager Initialization)**: ```java public class Singleton { private Singleton() {} // 构造函数私有化 private static Singleton instance = new ...
下面我们将深入探讨单态模式的实现方式、优缺点以及如何在MyEclipse中使用它。 ### 单态模式的实现 #### 1. 饿汉式(Eager Initialization) 在类加载时就完成了初始化,所以类加载比较慢,但获取对象的速度快,...