自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

甜心奶酪的专栏

待到秋来九月八,我花开后百花杀; 冲天香阵透长安,满城尽带黄金甲。

  • 博客(17)
  • 资源 (1)
  • 收藏
  • 关注

转载 Change Bidirectional Association to Unidirectional(将双向关联改为单向)

两个classes之间有双向关联,但其中一个class如今不再需要另一个class的特性.去除不必要的关联(association). 动机双向关联(bidirectional associations)很有用,但你也必须为它付出代价,那就是[维护双向链接,确保对象被正确创建和删除]而增加的复杂度.而且,由于很多程序员并不习惯使用双向关联,它往往成为错误之源.大量的双向连接(two-w

2009-01-24 09:03:00 701

转载 分析模式之责任模式

1、Party(团体):最初的通讯簿模型如下:用团体来概括人和组织:这样做的好处是人和组织都可以同等的来考虑。对于电话来说,我不需要知道这是属于一个公司的,还是只是属于个人的。 2、组织层次考虑下面一种情况,一个跨国公司芳香咖啡机制造公司(ACM),它有很多分公司,每个分公司又分成不同的区域子公司,而每个区域子公司又分成不同的部门,每个部门有很多销售办事处。我们

2009-01-23 17:01:00 1638

转载 Change Unidirectional Association to Bidirectional(将单向关联改为双向)

两个classes都需要使用对方特性,但其间只有一条单向连接(one-way link)。添加一个反向,并使修改函数(modifiers)能够同时更新两条连接。(注译:这里的指针等同于句柄(handle),修改函数(modifier)指的是改变双方关系者) 动机开发初期,你可能会在两个classes之间建立一条单向连接,使其中一个class可以引用另一个class.随着时间推移,你可能

2009-01-23 10:14:00 868

转载 Duplicate Observed Data(复制被监视数据)

注:所谓presentation class,用以处理[数据表现形式];所谓domain class,用以处理业务逻辑。你有一些domain data置身于GUI控件中,而domain method需要访问之。将该笔数据拷贝一个domain object中。建立一个Observer模式,用以对domain object和GUI object内的重复数据进行同步控制(sync.)。 

2009-01-22 12:32:00 927

转载 Replace Array with Object(以对象取代数组)

你有一个数组(array),其中的元素各自代表不同的东西。 以对象替换数组。对于数组中的每个元素,以一个值域表示之。 String[] row = new String[3];row[0] = "Livepool";row[1] = "15"; ==〉 Performance row = new Performance();row.setName("Livepool

2009-01-21 13:22:00 676

转载 Change Reference to Value(将引用对象改变为实值对象)

你有一个reference object(引用对象),很小且不可变(immutable),而且不易管理。将它变成一个value object(实值对象)。 动机在分布系统和并发系统中,不可变的value object特别有用,因为你不须考虑它们的同步问题。value object有一个非常重要的特性:它们应该是不可变的(immutable)。无论何时只要你调用同一个对象的同一个查询

2009-01-20 09:47:00 955

转载 Change Value to Reference(将实值对象改为引用对象)

你有一个class,衍生出许多相等实体(equal instances),你希望将它们替换为单一对象。将这个value object(实值对象)变成一个reference object(引用对象)。 动机在许多系统中,你都可以对对象做一个有用的分类:reference object和value objects。前者就像[客户]、[帐户]这样的东西,每个对象都代表真实世界中的一个实物,你

2009-01-19 09:42:00 1865

转载 Replace Data Value with Object(以对象取代数据值)

你有一笔数据项(data item),需要额外的数据和行为。 将这笔数据项变成一个对象。 class Order... private string customer;==>class Order... private Customer _customer;class Customer... private string _name; 动机一开始你可能会用一

2009-01-15 09:09:00 1056

转载 Self Encapsulate Field(自封装值域)

你直接访问一个值域(field),但与值域之间的耦合关系逐渐变得笨拙。为这个值域建立取值/设值函数(getting/setting methods),并且只以这些函数来访问值域。 private int _low, _high;boolean includes(int arg) {    return arg >= _low && arg }==〉 private int

2009-01-14 09:11:00 671

转载 Introduce Local Extension(引入本地扩展)

你所使用的server class需要一些额外函数,但你无法修改这个class。建立一个新class,使它包含这些额外函数。让这个扩展品成为source class的subclass(子类)或wrapper(外覆类)。Client Class...        private nextDate(Date):Date ==>MfDate...    public MfD

2009-01-13 09:30:00 878

转载 Introduce Foreign Method(引入外加函数)

你所使用的server class需要一个额外函数,但你无法修改这个class。在client class中建立一个函数,并以一个server class实体作为第一引数(argument)。 Date newStart = new Date(previousEnd.getYear(), previousEnd.getMonth(), previousEnd.getDate() + 1

2009-01-12 09:10:00 1103

转载 Hide Delegate(隐藏委托关系)

 客户直接调用其server object(服务对象)的delegate class。 在server端(某个class)建立客户所需的所有函数,用以隐藏委托关系(delegation)。 Client--〉Person  |  |Department ==〉 Client --〉Person--〉Department 动机 如果某个客户

2009-01-09 15:24:00 1434

转载 Inline Class(将类内联化)

你的某个class没有做太多事情(没有承担足够责任)。 将class的所有特性搬移到另一个class中,然后移除原class。 class Person... private string _name; public string getTelephoneNumber(); private TelephoneNumber _officeTelephone;class Telep

2009-01-08 08:57:00 1671

转载 Extract Class(提炼类)

某个class做了应该由两个class做的事. 建立一个新class,将相关的值域和函数从旧class搬移到新class。 class Person..    private String _name;    private String _officeAreaCode;    private String _officeNumber;    public String g

2009-01-07 10:54:00 954

转载 Move Field(搬移值域)

你的程序中,某个field(值域)被其所驻class之外的另一个class更多地用到。在target class建立一个new field,修改source field的所有用户,令它们改用new field。 class class1{    private int aField;}class class2{} ==>class class1{}c

2009-01-06 09:03:00 818

转载 Move Method(搬移函数)

你的程序中,有个函数与其所驻class之外的另一个class进行更多交流:调用后者,或被后者调用。在该函数最常引用(指涉)的class中建立一个有着类似行为的新函数。将旧函数变成一个单纯的委托函数(delegating method),或者将旧函数完全移除。class class1{    public void aMethod(){...}}class class2{} 

2009-01-05 10:30:00 993

转载 Substitute Algorithm(替换你的算法)

String foundPerson(String[] people) {    for(int i = 0; i        if(people[i].equals("Don")) {          return "Don";        }       if(people[i].equals("John")) {          return "John";        }    

2009-01-05 09:57:00 767

自己整理的日语汉字(未完)

自己整理的日语汉字,四级、三级的内容已整理完成。

2010-03-02

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除