Quantcast
Viewing all articles
Browse latest Browse all 35570

COMPOSITE(组合模式)---(看CCTV天天YY)

CCTV不断在改版,可见,我们国家还是有希望的。且不说其他,最近的“打老虎,拍苍蝇”很严肃,就知道了。

所有的频道,不要划成节目形式:

package patterns.structures.composite;

import java.util.ArrayList;
import java.util.List;

/**
 * 节目
 * 
 * @author one
 * 
 */
public abstract class Program {

	public String name;
	
	public List<Program> list = new ArrayList<Program>();

	public   void add(Program program) {
	}

	public   void remove(Program program) {
	}

	public   String get(Program program) {
		return null;
	}

	public abstract void display(Program program);
}

节目有很多种:音乐、广告、电影

package patterns.structures.composite;

public class Music extends Program {

	//安东阳---《失恋情歌》
	Music(String music) {
		this.name = music;
	}

	@Override
	public void display(Program program) {
		System.out.println("当前是音乐频道:" + program.name);
	}

}

package patterns.structures.composite;

/**
 * 广告
 * 
 * @author one
 * 
 */
public class Ad extends Program {

	// 《妈妈洗脚》
	Ad(String ad) {
		this.name = ad;
	}

	@Override
	public void display(Program program) {
		System.out.println("正在播放公益广告:" + program.name);

	}

}

package patterns.structures.composite;

/**
 * 电影是节目中的一个
 * 
 * @author one
 * 
 */
public class Movie extends Program {

	Movie(String movie){
		this.name=movie;
	}
	
	@Override
	public void add(Program program) {
		super.list.add(program);
		System.out.println("添加了一个节目:" + program.name);
	}

	@Override
	public void remove(Program program) {
		super.list.remove(program);
		System.out.println("删除了一个节目:" + program.name);
	}

	@Override
	public String get(Program program) {
		if (super.list.contains(program)) {
			return program.name;
		}
		return null; 
	}

	@Override
	public void display(Program program) {
		if(!super.list.contains(program)){
			System.out.println("当前节目不再列表中!");
			return;
		}
		System.out.println("当前节目名称为:" + this.get(program));
	}

}

电影里面也有植入的广告、音乐等元素。所以,这里把电影看成节目的整体实现。

package patterns.structures.composite;

public class Test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Music music = new Music("《失恋情歌》");
		Ad ad = new Ad("《妈妈洗脚》");


		Program program = new Movie("CCTV");
		program.add(ad);
		program.add(music);
		

		Movie movie = new Movie("《变形金刚》");
		movie.add(new Ad("<汉堡包>"));
		movie.add(new Music("<BeatHeart>"));
		
		program.add(movie);

	}

}

输出结果:

添加了一个节目:《妈妈洗脚》
添加了一个节目:《失恋情歌》
添加了一个节目:<汉堡包>
添加了一个节目:<BeatHeart>
添加了一个节目:《变形金刚》

用程序的思想解决实际生活问题,还是从实际中提出程序?哈哈,这都是相辅相成的。
作者:zhangqijun001 发表于2013-9-8 0:46:19 原文链接
阅读:148 评论:0 查看评论

Viewing all articles
Browse latest Browse all 35570

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>