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模式》 Flyweight模式是一种设计模式,其主要目的是通过共享技术来减少内存中对象的数量,从而优化内存使用效率。在对象数量庞大且大部分状态可以外部化的情况下,Flyweight模式尤其适用。它...
**C++ Flyweight模式** Flyweight模式是一种设计模式,属于结构型模式的一种,它主要解决的是在大量对象创建时可能导致的内存消耗问题。在计算机科学中,尤其是编程领域,内存管理是一个关键的话题,Flyweight模式...
在C#中,Flyweight模式尤其适用于那些内部状态可共享、外部状态可变的对象场景。 享元模式通常包含以下关键角色: 1. **享元接口(Flyweight Interface)**:定义了客户程序与享元对象交互的接口,规定了享元对象能...
软件模式之Flyweight模式.doc
6共享元模式(Flyweight) 用意:以共享的方式高效地支持大量的细粒度对象
Flyweight模式的核心思想是共享对象,通过复用大量相似对象来减少内存占用。这种模式通常在处理大量细粒度对象时非常有效,尤其是在这些对象大部分状态都可以外部化的情况下。例如,在文本编辑器中,每个字符可能都...
Java设计模式中的Flyweight模式是一种结构型设计模式,其主要目标是减少对象的创建,通过共享相似对象来降低内存使用和提高性能。在面向对象编程中,如果对象数量过多,可能会导致内存消耗过大,尤其是在处理大量...
Java设计模式中的Flyweight模式是一种结构型模式,其主要目的是减少对象的数量,通过共享大量具有相似属性的对象来节省内存和提高性能。Flyweight模式的核心思想是区分对象的内部状态(intrinsic state)和外部状态...
什么是Flyweight模式? 享元模式(Flyweight Pattern)是一种软件开发中的设计模式,其主要解决的问题是通过类对象的共享,来避免大量创建拥有相同内容的对象的开销。可以简单理解用空间换取时间。 举例说明 一般的...
使用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)是一种结构型设计模式,主要用于解决大量相似对象的创建和操作所带来的内存负载问题。该模式的主要设计目标是通过共享对象来减少内存负载,...
UML图示例展示了单纯Flyweight模式和复合Flyweight模式的结构。 #### 9. Bridge 模式 - **Bridge 模式**:Bridge模式用于将抽象化与实现化解耦,使得两者可以独立变化。这种模式可以帮助开发者管理系统的可变因素...
享元模式是一种结构型设计模式,它通过共享已有对象来减少对系统资源的消耗,从而提高性能。在Java中,享元模式常用于处理大量相似对象的场景,尤其是在内存管理中,通过对象复用来减少内存占用。以下是享元模式的...
由浅入深地讲解了16个设计模式,包括 singleton模式、Factory模式、Abstract Factory模式、Builder模式、Prototype模式、Adapter模式、Bridge模式、Composite模式、Decorator模式、Flyweight模式、Proxy模式、Chain ...
在需要大量相似对象的场景下,如文本编辑器中的字符显示,Flyweight模式可以极大地提高效率。 7. **Proxy模式**: - Proxy模式为其他对象提供一个代理,以控制对该对象的访问。代理对象可以增加额外的功能,如缓存...
9. **Flyweight模式**:Flyweight模式属于结构型设计模式,用于减少大量细粒度对象的创建,通过共享对象来支持大量的对象实例,特别适用于内存有限的环境。 10. **Iterator模式**:Iterator模式是一种行为设计模式...
Flyweight模式通过共享技术有效支持大量细粒度的对象,可以大幅度减少内存占用并提高性能。 #### Facade模式 Facade模式为子系统中的一组接口提供一个一致的界面,定义了一个高层接口,这个接口使得这一子系统更加...