分享
 
 
 

翻译TIPatterns--简单化(Simplifying Idioms)

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

小布同学这一小节写的很不爽,翻起来一头雾水。我想他大概的意思是说,如果方法需要传递比较多的参数,那最好把这些参数包成一个类。我觉得把messenger翻译成信使真是恶心,总是让人想起MSN.

简单化(Simplifying Idioms)

在研究复杂技术之前,了解一下使代码简单明了的基本方法是很有帮助的。

信使(Messenger)

最普通的方法就是通过信使(messenger),它简单的将信息打包到一个用于传送的对象,而不是将这些信息碎片单独传送。注意,如果没有信使(messenger),translate()的代码读起来会相当混乱。

//: simplifying:MessengerDemo.java

package simplifying;

import junit.framework.*;

class Point { // A messenger

public int x, y, z; // Since it's just a carrier

public Point(int x, int y, int z) {

this.x = x;

this.y = y;

this.z = z;

}

public Point(Point p) { // Copy-constructor

this.x = p.x;

this.y = p.y;

this.z = p.z;

}

public String toString() {

return "x: " + x + " y: " + y + " z: " + z;

}

}

class Vector {

public int magnitude, direction;

public Vector(int magnitude, int direction) {

this.magnitude = magnitude;

this.direction = direction;

}

}

class Space {

public static Point translate(Point p, Vector v) {

p = new Point(p); // Don't modify the original

// Perform calculation using v. Dummy calculation:

p.x = p.x + 1;

p.y = p.y + 1;

p.z = p.z + 1;

return p;

}

}

public class MessengerDemo extends TestCase {

public void test() {

Point p1 = new Point(1, 2, 3);

Point p2 = Space.translate(p1, new Vector(11, 47));

String result = "p1: " + p1 + " p2: " + p2;

System.out.println(result);

assertEquals(result,

"p1: x: 1 y: 2 z: 3 p2: x: 2 y: 3 z: 4");

}

public static void main(String[] args) {

junit.textui.TestRunner.run(MessengerDemo.class);

}

} ///:~

因为messenger只是用来传送数据,它所传送的数据通常声明为公有的(public),以便于存取。但是,你可以根据自己的需要把它们声明成私有的(private)。

集合型参数???(collecting parameter)

collecting parameter 是messenger的兄弟,messenger传参数给某个方法,而collecting parameter 从这个方法获取信息。一般说来,这通常会用在collecting parameter传给多个方法(multiple methods)的情况下,就像一只传粉的蜜蜂。

容器是一种特别有用的collecting parameter,因为它本来就是用来动态添加对象的。

//: simplifying:CollectingParameterDemo.java

package simplifying;

import java.util.*;

import junit.framework.*;

class CollectingParameter extends ArrayList {}

class Filler {

public void f(CollectingParameter cp) {

cp.add("accumulating");

}

public void g(CollectingParameter cp) {

cp.add("items");

}

public void h(CollectingParameter cp) {

cp.add("as we go");

}

}

public class CollectingParameterDemo extends TestCase {

public void test() {

Filler filler = new Filler();

CollectingParameter cp = new CollectingParameter();

filler.f(cp);

filler.g(cp);

filler.h(cp);

String result = "" + cp;

System.out.println(cp);

assertEquals(result,"[accumulating, items, as we go]");

}

public static void main(String[] args) {

junit.textui.TestRunner.run(

CollectingParameterDemo.class);

}

} ///:~

Collecting parameter 必须支持通过某些方法设置或者插入一些值。根据这个定义,信使可以当作collecting parameter 来用,前提是collecting parameter 是由它所传递给的方法来修改的。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有