Java设计模式:享元模式
12 Sep 2014注:本文为译文,原文出处java-design-patterns-in-stories
享元模式被用于减少内存使用情况. 它所做的就是与其他相似的对象分享尽量多的数据。
注:本文为译文,原文出处java-design-patterns-in-stories
享元模式被用于减少内存使用情况. 它所做的就是与其他相似的对象分享尽量多的数据。
注:本文为译文,原文出处java-design-patterns-in-stories
对于Facade Pattern, 比较常见的翻译有”外观模式”, “门面模式”, “刻面模式”, 个人认为”门面模式”还是比较言简意赅的.
门面模式隐藏了任务的复杂性并提供了一个简单的接口. 典型的例子就是计算机的启动. 当计算机启动时, 参与工作的包括:CPU, 内存, 硬件驱动等等. 为了简化用户的使用, 我们可以添加了一个门面, 它隐藏了整个任务的复杂程度并且提供了一个简单的接口加以替代.
项目中需要在service层调用外围系统的Restful Web Service接口, 采用了resteasy的代理工厂类”RestClientProxyFactoryBean”来构造接口的客户端, 同时也需要在service层配置声明式事务, 为了统一配置风格, 因此并没有采用@Transactional的注解方式, 而是选择了通过另一个工厂代理类”TransactionProxyFactoryBean”加以实现.
注:本文为译文,原文出处java-design-patterns-in-stories
装饰器模式为已存在的对象动态的添加额外的一些功能. 在这篇文章里, 我会用一个简单的例子 - 装饰你的女友 - 来举例说明装饰器模式的原理.
注:本文为译文,原文出处java-design-patterns-in-stories
组合模式是一个相对简单但是在很多设计中都应用非常广泛的模式, 诸如在:SWT, Eclipse Workspace等中都有广泛应用. 它主要生成一个可通过统一方法访问的结构化的树.
当下流行的单页面程序可以说是比比皆是. 开发此类程序通常需要一个独立的路由机制. 类似于Emberjs的框架都是在一个路由类的基础上构建的. 虽然我依然不缺点这是否是一个我所喜欢的理论, 但是我百分之百确定AbsurdJS应该有一个内置的路由. 同时, 由于这是一个轻量级的类库, 因此路由应该是一个轻巧, 简单的类. 接下来, 让我们来看看这样一个模块是怎样的.
Javascript中,通过使用一对双引号「”」或单引号「’」来表示字符串. 但是当需要定义长字符串时, 将所有字符串写在同一行内,很大程度上影响了可读性和可调试性, 尤其是定义字符串来表示HTML或Javascript代码片段时. 因此, 使用多行字符串则成为了最佳实践, 下面我将为大家介绍几种常见的多行字符串的使用方式.
表面上这两个方法的行为是相似的: acquire()/await()在某些情况下可以令线程阻塞, release()/signal()则可以解除阻塞. 然而Semaphore和Condition有着不同的目的:
1.java.util.concurrent.Semaphore是相对更高级别的同步机制, 旨在供程序员使用. 你可以在访问资源之前, 使请求者线程调用acquire()来限制对资源的并发访问(如果没有semaphore 的许可, 此方法令线程阻塞). javadoc中的描述为:
Conceptually, a semaphore maintains a set of permits. Each acquire() blocks if necessary until a permit is available, and then takes it. Each release() adds a permit, potentially releasing a blocking acquirer.
2.java.util.concurrent.locks.Condition则是一个相对低级别的同步机制, 它主要提升了java.lang.Object methods wait(), notify() and notifyAll()的功能. 当需要等待某些条件为真时(通常通过其它线程的活动), 它使线程暂停活动; 当条件中状态变量变化的时候, 使其他线程”唤醒”正在等待的线程. 通常来说, 正确使用它是比较困难的并且建议开发者使用java.util.concurrent包中更高级的机制(比如: Semaphore).
注:本文为译文,原文出处Eclipse Design Patterns – Proxy and Bridge in Workspace
注:本文为译文,原文出处java-design-patterns-in-stories
简单来讲, 桥接模式是一个两层的抽象.
桥接模式意为:”分离抽象与实现, 从而使抽象与实现可以独立的区分开来”. 桥接使用封装,聚合,利用继承在不同类中分离出职责.