摘要:
本质:缓存共享对象,降低内存消耗什么时候用:系统中存在大量相同或相似的对象,这些对象耗费大量的内存资源。 大部分的对象可以按照内部状态进行分组,且可将不同部分外部化,这样每一个组只需保存一个内部状态。 由于享元模式需要额外维护一个保存享元的数据结构,所以应当在有足够多的享元实例时才值得使用享元模式。 阅读全文
摘要:
原文:http://c.biancheng.net/view/1369.html 什么时候用:对分层结构系统构建时,使用外观模式定义子系统中每层的入口点可以简化子系统之间的依赖关系。 当一个复杂系统的子系统很多时,外观模式可以为系统设计一个简单的接口供外界访问。 当客户端与多个子系统之间存在很大的联 阅读全文
摘要:
原文:http://c.biancheng.net/view/1366.html什么时候用:当需要给一个现有类添加附加职责,而又不能采用生成子类的方法进行扩充时。例如,该类被隐藏或者该类是终极类或者采用继承方式会产生大量的子类。 当需要通过对现有的一组基本功能进行排列组合而产生非常多的功能时,采用继 阅读全文
摘要:
原文地址:http://c.biancheng.net/view/1364.html 什么时候用: 结构图: 示例代码: 阅读全文
摘要:
原文地址:http://c.biancheng.net/view/1361.html什么时候用:当前接口不满足第三方系统需求,这种不满足不是根本上的不满足,往往是形式上的,只要加以转换就可以。适配器模式(Adapter)包含以下主要角色: 目标(Target)接口:当前系统业务所期待的接口,它可以是 阅读全文
摘要:
原文:http://c.biancheng.net/view/1359.html什么时候用:只想使用主接口的特定功能,且不想暴露主接口。在满足基本功能的基础上,可以加以扩展,并不涉及主接口的变动代理模式分为静态代理和动态代理。 静态:由程序员创建代理类或特定工具自动生成源代码再对其编译,在程序运行前 阅读全文
摘要:
原文地址:http://c.biancheng.net/view/1354.html什么时候用:一个复杂的对象该对象构造过程由多个部分组成各部分的构造是有先后顺序的主要角色: 产品角色(Product):它是包含多个组成部件的复杂对象,由具体建造者来创建其各个零部件。 抽象建造者(Builder): 阅读全文
摘要:
原文地址:http://c.biancheng.net/view/1351.html工厂模式:创建一个类时,不在使用处用new来创建,而是有另一个类控制创建,这个类就是生成类的工厂。优点:统一生产业务所需的类,实现了创建与使用分离。调用者只需要知道工厂的名称,就可以知道所能生成的类缺点:工厂类越来越 阅读全文
摘要:
原文地址:http://c.biancheng.net/view/1343.html使用场景:通过new 创建新的副本非常麻烦,需要传入很多值,且这些值大部分是不变的。需要不停的高效的创建新的副本来满足业务需求克隆:浅克隆:生成一个新的副本,但是非基本类型的数据还是指向原内存地址。深克隆:生成一个新 阅读全文
摘要:
原文地址:http://c.biancheng.net/view/1338.html使用场景:只需要一份对象实例的时候,例如:缓存池,实时信息等。好处:不需要频繁创建和释放对象,保证效率。只占用一份内存,使用最少的资源。示例代码:懒汉模式public class LazySingleton { pr 阅读全文