Java设计模式:Eclipse中的应用
24 Oct 2014注:本文为译文,原文出处java-design-patterns-in-stories
注:本文为译文,原文出处java-design-patterns-in-stories
未来, 时间旅行终将被发明. 备忘录就是时间旅行的关键. 主要的是, 它所做的是允许一个对象回溯到一个状态.
在接下来的例子中, 你可以时间旅行到你生命中的任何年代, 并且可以恢复到已经去过的之前的一个年代.
注:本文为译文,原文出处java-design-patterns-in-stories
中介者设计模式应用于协作一组同事. 那些同事互相之间不会直接沟通, 而是通过中介者.
下面的例子中, 同事A想聊天, 同事B想打架. 当他们做出一些行为时(例如: doSomething()
), 会调用中介者去做那些事儿.
注:本文为译文,原文出处java-design-patterns-in-stories
迭代器模式应用于遍历对象的集合. 它是一个很常用的模式, 或许你之前已经用过他了. 只要你见过像hasNext()
和next()
, 它可能就是迭代器模式. 例如: 你可以遍历一个数据库查询记录的链表.
下面是我平时用到的和网上看到的一些区分浏览器版本及IE版本的代码:
<script>
/*@cc_on
@if (@_jscript_version > 5.7)
document.write("You are using IE8+");
@elif (@_jscript_version == 5.7 && window.XMLHttpRequest)
document.write("You are using IE7");
@elif (@_jscript_version == 5.6 || (@_jscript_version == 5.7 && !window.XMLHttpRequest))
document.write("You are using IE6");
@elif (@_jscript_version == 5.5)
document.write("You are using IE5.5");
@else
document.write("You are using IE5 or older");
@end
@*/
</script>
<script>
// Option from Dean Edwards
//以下两行,利用IE支持条件编译进行判断
var ie = /*@cc_on!@*/false;
// Use the commented line:
var ie//@cc_on=1;
// Variation (shorter variable):
//以下两行,利用ie不支持垂直制表符判断
var ie = '\v'=='v';
// Option to Gareth Hayes (former record-holder):
var ie = !+"\v1";
//利用了IE与标准浏览器在处理数组的toString方法的差异做成的.
//对于标准游览器,如果数组里面最后一个字符为逗号,JS引擎会自动剔除它
var ie = !-[1,];
</script>
ClassLoader 提供了两个方法用于从装载的类路径中取得资源:
注:本文为译文,原文出处java-design-patterns-in-stories
在某些场景需要被解释的情况下, 我们通常使用解释器模式. 接下来的例子是一个很简单的解释器的实现. 它所做的就是将字母”a”与”b”解析为”1”和”2”.
注:本文为译文,原文出处java-design-patterns-in-stories
命令设计模式获得一个操作及它的参数并将其封装在一个执行对象内, 记录日志等. 在下面的例子中, Command是一个操作, 它的参数是Computer, 它们被封装在Switch内.
另一方面, 命令模式包括四部分: 命令, 接收者, 触发器和客户端. 在这个例子内, Switch是触发器, Computer是接收者. 一个具体的Command持有一个接收者对象并且触发接收者的方法. 触发器可以使用不同的具体方法. 客户端绝对接收者使用哪个方法.
注:本文为译文,原文出处java-design-patterns-in-stories
责任链模式的主要思想是构建一个处理单元的链条, 如果满足某一阀值则每一个单元都将处理此请求. 由于创建了一个链, 如果一个单元满足阀值, 那么它的下一个单元就将被尝试, 以此类推. 每个请求都将沿着链被处理.