`
jaesonchen
  • 浏览: 313251 次
  • 来自: ...
社区版块
存档分类
最新评论

Flyweight模式

 
阅读更多
public class Flyweight {

	public static void main(String[] args) {
		
		IConnection con = ConnectionPool.getInstance().getConnection();
		con.query("select * from user");
		ConnectionPool.getInstance().release(con);
	}
}

class ConnectionPool {
	
	private List<IConnection> pool;

	private int poolSize = 10;
	private static ConnectionPool instance = new ConnectionPool();
	
	private ConnectionPool() {
		
		pool = new ArrayList<IConnection>(poolSize);
		DriverManager.registerDriver(new MySqlDriver());
		for (int i = 0; i < poolSize; i++) {
			
			IConnection con = DriverManager.getConnection();
			pool.add(con);
		}
	}
	
	public static ConnectionPool getInstance() {
		return instance;
	}
	
	/* 返回连接到连接池 */  
	public synchronized void release(IConnection con) {
		pool.add(con);
		System.out.println("release connection,poolsize=" + pool.size());
	}

	/* 返回连接池中的一个数据库连接 */
	public synchronized IConnection getConnection() {
		if (pool.size() > 0) {
			IConnection con = pool.get(0);
			pool.remove(con);
			System.out.println("get connection,remain=" + pool.size());
			return con;
		} else {
			return null;
		}
	}
}

 输出为:

get connection,remain=9
MySql query ('select * from user') is executing......
release connection,poolsize=10

 

 

* 意图: 运用共享技术有效地支持大量细粒度的对象。

分享到:
评论

相关推荐

    软件模式之Flyweight模式.docx

    《软件模式之Flyweight模式》 Flyweight模式是一种设计模式,其主要目的是通过共享技术来减少内存中对象的数量,从而优化内存使用效率。在对象数量庞大且大部分状态可以外部化的情况下,Flyweight模式尤其适用。它...

    C++ Flyweight模式

    **C++ Flyweight模式** Flyweight模式是一种设计模式,属于结构型模式的一种,它主要解决的是在大量对象创建时可能导致的内存消耗问题。在计算机科学中,尤其是编程领域,内存管理是一个关键的话题,Flyweight模式...

    C#设计模式之Flyweight

    在C#中,Flyweight模式尤其适用于那些内部状态可共享、外部状态可变的对象场景。 享元模式通常包含以下关键角色: 1. **享元接口(Flyweight Interface)**:定义了客户程序与享元对象交互的接口,规定了享元对象能...

    软件模式之Flyweight模式.doc

    软件模式之Flyweight模式.doc

    结构型模式之共享元模式(Flyweight)

    6共享元模式(Flyweight) 用意:以共享的方式高效地支持大量的细粒度对象

    设计模式之轻量级Flyweight

    Flyweight模式的核心思想是共享对象,通过复用大量相似对象来减少内存占用。这种模式通常在处理大量细粒度对象时非常有效,尤其是在这些对象大部分状态都可以外部化的情况下。例如,在文本编辑器中,每个字符可能都...

    java设计模式之Flyweight文.pdf

    Java设计模式中的Flyweight模式是一种结构型设计模式,其主要目标是减少对象的创建,通过共享相似对象来降低内存使用和提高性能。在面向对象编程中,如果对象数量过多,可能会导致内存消耗过大,尤其是在处理大量...

    java设计模式之Flyweight[归纳].pdf

    Java设计模式中的Flyweight模式是一种结构型模式,其主要目的是减少对象的数量,通过共享大量具有相似属性的对象来节省内存和提高性能。Flyweight模式的核心思想是区分对象的内部状态(intrinsic state)和外部状态...

    关于Flyweight模式应用实践的相关介绍

    什么是Flyweight模式? 享元模式(Flyweight Pattern)是一种软件开发中的设计模式,其主要解决的问题是通过类对象的共享,来避免大量创建拥有相同内容的对象的开销。可以简单理解用空间换取时间。 举例说明 一般的...

    angular-flyweight:使用AngularJS的Flyweight模式的示例实现

    使用Flyweight模式的AngularJS 一个示例,展示了如何使用AngularJS 1.4实现Flyweight模式 本地运行 确保已安装 $ git clone https://github.com/iranreyes/angular-flyweight.git # or clone your own fork $ cd ...

    C++设计模式之享元模式(Flyweight)

    C++设计模式之享元模式(Flyweight) C++设计模式之享元模式(Flyweight)是一种结构型设计模式,主要用于解决大量相似对象的创建和操作所带来的内存负载问题。该模式的主要设计目标是通过共享对象来减少内存负载,...

    23种设计模式的uml表示

    UML图示例展示了单纯Flyweight模式和复合Flyweight模式的结构。 #### 9. Bridge 模式 - **Bridge 模式**:Bridge模式用于将抽象化与实现化解耦,使得两者可以独立变化。这种模式可以帮助开发者管理系统的可变因素...

    Java设计模式之共享模式/享元模式(Flyweight模式)介绍

    享元模式是一种结构型设计模式,它通过共享已有对象来减少对系统资源的消耗,从而提高性能。在Java中,享元模式常用于处理大量相似对象的场景,尤其是在内存管理中,通过对象复用来减少内存占用。以下是享元模式的...

    JavaScript设计模式与开发实践.pdf

    由浅入深地讲解了16个设计模式,包括 singleton模式、Factory模式、Abstract Factory模式、Builder模式、Prototype模式、Adapter模式、Bridge模式、Composite模式、Decorator模式、Flyweight模式、Proxy模式、Chain ...

    设计模式原理与应用之结构型模式.pptx

    在需要大量相似对象的场景下,如文本编辑器中的字符显示,Flyweight模式可以极大地提高效率。 7. **Proxy模式**: - Proxy模式为其他对象提供一个代理,以控制对该对象的访问。代理对象可以增加额外的功能,如缓存...

    C++设计模式.pdf

    Flyweight模式通过共享技术有效支持大量细粒度的对象,可以大幅度减少内存占用并提高性能。 #### Facade模式 Facade模式为子系统中的一组接口提供一个一致的界面,定义了一个高层接口,这个接口使得这一子系统更加...

    设计模式专题---设计模式示例代码(全)(python--c++)

    9. **Flyweight模式**:Flyweight模式属于结构型设计模式,用于减少大量细粒度对象的创建,通过共享对象来支持大量的对象实例,特别适用于内存有限的环境。 10. **Iterator模式**:Iterator模式是一种行为设计模式...

Global site tag (gtag.js) - Google Analytics