`
只帅一次
  • 浏览: 34603 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java编程思想练习题-第6章练习8-简单工厂方法和池初探

阅读更多

题目:效仿示例Lunch.java的形式,创建一个名为ConnectionMannager的类,该类管理一个元素为Connection对象的固定数组。客户端程序员不能直接创建connection对象,而只能通过ConnectionMananger中的某个static方法来获取它们。当ConnectionManager之中不再有对象时,它会返回null引用。在main中检测这些类。

 

解析:ConnectionMannager对象其实相当于一个connection的池,如果完善一下这个例子,增加把connection放回池的方法的话,那这个类就可以看做是一个简单的静态池。池子中静态方法返回connection对象的时候用到了简单工厂方法。

 

Connection对象如下:

package ConnectionDemo;
public class Connection {
	String str="";
	protected  Connection(String str) {
		this.str=str;
	}
	public void describ(){
		System.out.println("this is connection "+str);
	}

}

 ConnectionMannager对象如下:

package ConnectionDemo;

import java.util.ArrayList;

public class ConnectionMannager {

	private static int CONNECTION_NUM=20;
	private static ArrayList<Connection> connections=new ArrayList<>();
	private static ArrayList<Connection> uconnections=new ArrayList<>();
	
	static {
		for(int i=1;i<=CONNECTION_NUM;i++){
			connections.add(new Connection(""+i));
		}
	}
	
	private  ConnectionMannager() {}

	public synchronized static Connection getConnection(){
		if(connections.size()>0){
			Connection temp=connections.get(0);
			uconnections.add(temp);
			connections.remove(0);
			
			return temp;
		}
		return null;
	}
	
	public synchronized static boolean returnConnection(Connection c){
		if(uconnections.contains(c)){
			connections.add(c);
			uconnections.remove(c);
			return true;
		}
		return false;
	}
	
	public static void main(String[] args) {
		for(int i=1;i<=30;i++){
			Connection c=getConnection();
			c.describ();
			returnConnection(c);
		}
	}

}

 增加了returnConnection方法用来模拟把数据返回池的方法。效果良好。

2
1
分享到:
评论

相关推荐

    Java-program-design-.rar_Java 8

    Java 8是Java编程语言的一个重要版本,引入了许多新特性,极大地提升了开发效率和代码的可读性。在这个压缩包中,"Java-program-design-.rar_Java 8"包含了关于学习和理解Java 8编程的一系列电子教程。下面将详细...

    基于计算机软件开发的JAVA编程应用初探.pdf

    Java语言自问世以来就以其独特的特性和优势吸引了大量开发者的注意,这些特性包括但不限于其平台独立性、内存管理优化、面向对象的编程设计以及其强大的多线程支持。 首先,Java语言的平台独立性是指它能够跨不同...

    struts编程思想初探

    ### Struts编程思想初探 #### 第一章 引言 Struts框架是Apache基金会Jakarta项目的一个子项目,最初于2002年5月发布。该项目的主要目标是改进和提升JavaServer Pages (JSPs)、Servlet、标签库等技术在Web应用开发...

    基于计算机软件开发的JAVA编程应用初探.zip

    Java编程在计算机软件开发中的应用广泛且深远,它以其跨平台、面向对象和高效能的特点,成为了许多企业和开发者首选的编程语言。这份资料"基于计算机软件开发的JAVA编程应用初探"将引领我们深入理解Java在软件开发中...

    Android中滑屏初探 ---- scrollTo 以及 scrollBy方法使用说明

    Android中滑屏初探 ---- scrollTo 以及 scrollBy方法使用说明 Android中滑屏初探 ---- scrollTo 以及 scrollBy方法使用说明 Android中滑屏初探 ---- scrollTo 以及 scrollBy方法使用说明

    历史试题练习题教案学案课件综合科政治教学方法初探-5页.pdf

    综上所述,历史试题练习题教案学案课件综合科政治教学方法初探中,主要探讨了如何在有限的时间内,通过科学的教学策略,提高学生对政治知识的理解和应用能力,以应对高考综合科的挑战。教师需灵活运用多种教学手段,...

    量化投资以Python为工具课后答案PDF代码数据完整版最新版本

    书中不仅提供了全面的课后习题、代码实例及其所需的数据文件,还涵盖了基础量化策略和Python语法的练习,旨在教授Python的基础函数和功能实现。 本书深入浅出地讲解了Python语言及其在量化投资中的应用,快速引导...

    OpenGL实现3D游戏编程连载1-初探3D世界

    OpenGL实现3D游戏编程连载1-初探3D世界

    Java完美编程(第3版).pdf

    书中全面介绍java语言已经实现的封装、继承和多态性技术,在介绍swing gui的时候提及事件驱动的编程并提供很多练习。在介绍uml和模式的同时进一步介绍了oop。  本书不仅可作为高等院校程序设计课程的入门教材,还可...

    计算机软件开发中Java编程语言的应用初探.pdf

    计算机软件开发中Java编程语言的应用初探是计算机软件开发的重要组成部分,Java编程语言是一种广泛使用的编程语言,具有许多优点和特征,使其在软件开发中应用非常广泛。 Java编程语言的相关解释 Java编程语言是一...

    Java教学方法初探.pdf

    Java教学方法初探 ...Java教学方法初探强调了学习兴趣的培养、实例化教学、实例化先果后因式教学和重编程思想而轻语法等几个重要的教学方法,旨在提高学生的学习兴趣和应用知识能力,达到教学效果的最优化。

    苏科版九年级物理《第十三章电路初探第十四章欧姆定律》基础练习题(20211210025415).pdf

    苏科版九年级物理《第十三章电路初探第十四章欧姆定律》基础练习题(20211210025415).pdf

    IBM之java性能诊断工具初探-IBM Support assitant的使用.docx

    ### IBM之Java性能诊断工具初探—IBM Support Assistant的使用 #### 一、引言 随着信息技术的飞速发展,企业级应用系统变得越来越复杂,性能优化成为了保证系统高效稳定运行的关键因素之一。Java作为跨平台的语言...

    Java高级编程课程思政案例教学初探.pdf

    Java高级编程课程思政案例教学初探.pdf

    JAVA入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)

    第8章 Java中的包(Package)命名习惯和注释 193 教学视频:43分钟 8.1 Java中的包(Package) 193 8.1.1 Java中的包 193 8.1.2 在Eclipse中使用包 194 8.1.3 天上掉下个package 197 8.1.4 包带来了什么? 197...

    计算机软件开发中JAVA编程语言及其实际应用.pdf

    Java作为一种编程语言,在计算机软件开发领域占据了重要的地位。它以其多线程能力、平台无关性以及在实际应用中的广泛运用而备受瞩目。 首先,Java的多线程特征是其一大亮点。在Java中,多线程意味着多个任务可以...

    Java高级编程课程思政案例教学初探.zip

    Java高级编程课程思政案例教学初探,是一个深入探讨如何将思想政治教育融入到Java高级编程教学中的主题。在当前的教育环境中,强调立德树人,将思政元素与专业课程相结合,旨在培养具备良好品德和社会责任感的IT人才...

    商业编程-源码-《初探WINDOWS下IME编程》配套源代码.zip

    《初探WINDOWS下IME编程》配套源代码是一个深入学习Windows平台输入法引擎(IME)开发的重要资源。IME,全称为Input Method Editor,是操作系统中用于输入非拉丁字符集的软件组件,尤其对于中文、日文、韩文等亚洲...

    商业编程-源码-TIF格式图像文件初探.zip

    本资料“商业编程-源码-TIF格式图像文件初探.zip”提供了深入理解TIF格式图像文件的源代码,帮助开发者掌握如何在自己的项目中读取、操作和保存这种格式的图像。 TIF是一种灵活的位图图像格式,它支持多种图像模式...

    Java入门1·2·3:一个老鸟的Java学习心得.PART3(共3个)

    第8章 Java中的包(Package)命名习惯和注释 193 教学视频:43分钟 8.1 Java中的包(Package) 193 8.1.1 Java中的包 193 8.1.2 在Eclipse中使用包 194 8.1.3 天上掉下个package 197 8.1.4 包带来了什么? 197...

Global site tag (gtag.js) - Google Analytics