鱼遇于池,池涸,相濡以沫,相鞠以湿,不若相忘于海。

while (alive) {
  object state = working & fighting & enjoying & living thanksgiving;
}
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Watermark Maker Classes II: Watermark

Posted on 2005-07-28 10:37  alittlefish  阅读(993)  评论(1编辑  收藏  举报
前文讲了水印位置的基本思路以及代码,接下来就是水印的实体类了。前面讲了我把水印的组成分为水印位置与水印内容两个对象,但是,实现的时候,界限就不是那么明显。

我提供了一个Watermark的实体类,而它只是作为一个抽象的实体,由于水印包括了图片与文字两种形式,所以由此类衍生出ImageWatermark与TextWatermark两个子类。由这两个类来实现具体的水印内容的区分。



ImageWatermark拥有一个内嵌类(Nested Class)ImageProperties,表示水印的图片信息。
TextWatermark拥有一个内嵌类TextProperties,表示水印文字的属性。

Watermark对象提供了对这两个具体的水印内容的聚合。

这里有个问题,是把水印内容建一个抽象类,然后衍生不同的水印内容(图片、文字)好呢,还是以我这样的设计好。我个人觉得,我这么做是为了从水印(Watermark)的角度去区别对象——即可以直接从ImageWatermark和TextWatermark来区分是何种水印方式,而不是再从其内容来区分。这个对后面的水印生成类的定义应该是有帮助的。

另外,Watermark也提供了对之前的Position的聚合