`
songkang666
  • 浏览: 103190 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Composite悬而未决

 
阅读更多
        Composite模式是构造型的设计模式之一,通过递归手段来构造诸如文件系统之类的树形的对象结构;Composite模式所代表的数据构造是一群具有统一接口界面的对象集合,并可以通过一个对象来访问所有的对象(遍历)。
      



Component<-----> MediaElement

public interface MediaElement {
        public void add(MediaElement);
        public void remove(MediaElement);
        public void display();
}


Leaf <-----> Media

public class Media implements MediaElement {
        String  name;
        mediaType  type;
        public void display() {
                // 根据mediaType来决定显示的方式,对图片、网页一直显示,对视频文件,一直循环播放。
        }
}


Composite <-----> MediaList 、 TimeList 、 DateList

public class MediaList implements MediaElement {
        time  duration; // 针对一个图片、网页显示的时长,针对视频,设为null;
        ArrayList<Media> list; // 多个Media组成的列表
        public void add(Media) {
                // 添加一个Media对象到list;
        }
        public void remove(Media) {
                // 从list中删除一个Media对象;
        }
        public void display() {
                loop
                        foreach(list)
                                // 若list的当前Media为图片或网页,则调用其display,并在duration时间后,结束display。
                                // ???若为视频,这里好像有点问题
        }
}


public class TimeList implements MediaElement {
        time  startTime;  // 开始时间
        time  endTime;    // 结束时间
        ArrayList<MediaList> list;  // 多个MediaList组成的列表
        public void add(MediaList) {
                // 添加一个MediaList对象到list;
        }
        public void remove(MediaList) {
                // 从list中删除一个MediaList对象;
        }
        public void display() {
                // 到startTime时,开始
                loop {
                        foreach(list) {
                               // 调用MediaList的display
                        }
                        // 到达结束时间后,结束 。
                }
        }
}


public class DateList implements MediaElement {
        date var1;
        ArrayList<TimeList> list;
        public void add(TimeList) {
                // 添加一个TimeList对象到list;
        }
        public void remove(TimeList) {
                // 从list中删除一个TimeList对象;
        }
        public void display() {
                // 到指定日时,开始
                foreach(list) {
                       // 调用TimeList的display
                       // list遍历一遍后,结束。
                }
        }
}


呃。。。不知道我依照高楼大厦建了个小屋,还是挖了个地洞,先记下来再说,设计模式的具体应用有点难。
分享到:
评论
1 楼 nonocast 2013-04-17  
比较抽象而已,要习惯抽象需要一个过程,上手composite确实有难度。

相关推荐

Global site tag (gtag.js) - Google Analytics