head first---------facade design pattern
import org.omg.CORBA.TCKind;
/**
* 功放、扩音器类
* @author Administrator
*
*/
public class Amplifier {
public void on(){
System.out.println("打开功放....");
}
public void off(){
System.out.println("关闭功放....");
}
//设置是DVD还是VCD播放模式
public void setPlayerModel(TvPlayerModel tvPlayerModel){
tvPlayerModel.setModel();
}
public void setSurroundSound(TvPlayerModel tvPlayerModel){
tvPlayerModel.setVoiceType();
}
//音量大小
public void setVoiceLevel(int voice){
System.out.println("音量大小为:"+voice);
}
}
/**
* DVD 播放
* @author Administrator
*
*/
public class DvdPlayerModel implements TvPlayerModel{
@Override
public void setModel() {
System.out.println("播放模式是DVD....");
}
public void on(){
System.out.println("打开Dvd player...");
}
public void off(){
System.out.println("关闭dvd player....");
}
public void play(String movie){
System.out.println("dvd 播放...."+movie);
}
public void setVoiceType(){
System.out.println("声音为立体声....");
}
public void setTwoChannelAudio(){
System.out.println("设置两个频道自动播放....");
}
public void pause(){
System.out.println("暂停....");
}
public void stop(){
System.out.println("停止播放....");
}
}
/**
* 组装家庭影院的类,包括watchMovie(String type)
* endMovie()方法
* @author Administrator
*
*/
public class HomeTheaterFacade {
public Amplifier amplifier;
public Tuner tuner;
public TvPlayerModel tvModel;
public Projector projector;
public TheaterLight lights;
public Screen screen;
public PopCornPopper popper;
public HomeTheaterFacade(Amplifier amplifier, Tuner tuner,
TvPlayerModel tvModel, Projector projector, TheaterLight lights,
Screen screen, PopCornPopper popper) {
this.amplifier = amplifier;
this.tuner = tuner;
this.tvModel = tvModel;
this.projector = projector;
this.lights = lights;
this.screen = screen;
this.popper = popper;
}
//encapsulation watch movie
public void watchMovie(String movie){
System.out.println("Get ready to watch a movie......");
popper.on();
popper.pop();
lights.dim(10);
screen.down();
projector.on();
projector.setWidenScreenModel();
amplifier.on();
amplifier.setPlayerModel(tvModel);
amplifier.setSurroundSound(tvModel);
amplifier.setVoiceLevel(5);
tvModel.on();
tvModel.play(movie);
}
//close movie
public void endMovie(){
System.out.println("Shutting movie theater down.....");
popper.off();
lights.off();
screen.up();
projector.off();
amplifier.off();
tvModel.stop();
tvModel.off();
}
}
/**
* 观赏电影
* @author Administrator
*
*/
public class HomeTheaterTest {
public static void main(String[] args) {
//实例化组件
Amplifier amplifier=new Amplifier();
Tuner tuner=new Tuner();
TvPlayerModel tvModel=new DvdPlayerModel();
Projector projector=new Projector();
Screen screen=new Screen();
TheaterLight lights=new TheaterLight();
PopCornPopper popCornPopper=new PopCornPopper();
HomeTheaterFacade homeTheater=new HomeTheaterFacade(amplifier, tuner, tvModel, projector, lights, screen, popCornPopper);
homeTheater.watchMovie("火线三兄弟...........");
homeTheater.endMovie();
}
}
/**
* 爆米花类
* @author Administrator
*
*/
public class PopCornPopper {
public void on(){
System.out.println("打开爆米花机......");
}
public void off(){
System.out.println("关闭爆米花机......");
}
public void pop(){
System.out.println("开始爆米花机......");
}
}
/**
* 投影仪
* @author Administrator
*
*/
public class Projector {
//set player on model
public void setWidenScreenModel(){
System.out.println("projecor model is widen....");
}
public void on(){
System.out.println("打开投影仪....");
}
public void off(){
System.out.println("关闭投影仪...");
}
//设置投影仪模式
public void setTvModel(TvPlayerModel tvModel){
tvModel.setModel();
}
}
/**
* 屏幕类
* @author Administrator
*
*/
public class Screen {
public void down(){
System.out.println("把屏幕放下...");
}
public void up(){
System.out.println("把屏幕拉上...");
}
}
/**
* 电影院的类
* @author Administrator
*
*/
public class TheaterLight {
public void on(){
System.out.println("打开电影院....");
}
public void off(){
System.out.println("关闭电影院....");
}
public void dim(int volumn){
System.out.println("灯光亮度是原来的"+volumn+"%");
}
}
/**
* 收音机类
* @author Administrator
*
*/
public class Tuner {
public void on(){
System.out.println("打开tuner...");
}
public void off(){
System.out.println("关闭tuner...");
}
public void setAm(){
System.out.println("跳到 am 频道...");
}
public void setFm(){
System.out.println("跳到 fm 频道....");
}
}
/**
* 播放模式,DVD、VCD
* @author Administrator
*
*/
public interface TvPlayerModel {
public void setModel();
public void setVoiceType();//声道种类
public void on();
public void off();
public void play(String movie);
public void setTwoChannelAudio();
public void pause();
public void stop();
}
/**
* VCD 播放
* @author Administrator
*
*/
public class VcdPlayer implements TvPlayerModel{
@Override
public void setModel() {
System.out.println("播放模式是VCD....");
}
public void on(){
System.out.println("打开vcd player...");
}
public void off(){
System.out.println("关闭vcd player....");
}
public void play(String movie){
System.out.println("vcd 播放...."+movie);
}
public void setVoiceType(){
System.out.println("声音为立体声....");
}
public void setTwoChannelAudio(){
System.out.println("设置两个频道自动播放....");
}
public void pause(){
System.out.println("暂停....");
}
public void stop(){
System.out.println("停止播放....");
}
}
打开爆米花机......
开始爆米花机......
灯光亮度是原来的10%
把屏幕放下...
打开投影仪....
projecor model is widen....
打开功放....
播放模式是DVD....
声音为立体声....
音量大小为:5
打开Dvd player...
dvd 播放....火线三兄弟...........
Shutting movie theater down.....
关闭爆米花机......
关闭电影院....
把屏幕拉上...
关闭投影仪...
关闭功放....
停止播放....
关闭dvd player....
head first---------facade design pattern的更多相关文章
- 设计模式之 - 外观模式 (Facade design pattern)
1. 模式意图: 为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更容易使用. 2. 结构 3. 工厂方法模式C#实现 using System; ...
- 说说设计模式~大话目录(Design Pattern)
回到占占推荐博客索引 设计模式(Design pattern)与其它知识不同,它没有华丽的外表,没有吸引人的工具去实现,它是一种心法,一种内功,如果你希望在软件开发领域有一种新的突破,一个质的飞越,那 ...
- 设计模式(Design Pattern)系列之.NET专题
最近,不是特别忙,重新翻了下设计模式,特地在此记录一下.会不定期更新本系列专题文章. 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结. 使用 ...
- [转]Design Pattern Interview Questions - Part 4
Bridge Pattern, Composite Pattern, Decorator Pattern, Facade Pattern, COR Pattern, Proxy Pattern, te ...
- Design Pattern in Simple Examples
Instead of defining what is design pattern lets define what we mean by design and what we mean by pa ...
- java设计模式大全 Design pattern samples in Java(最经典最全的资料)
java设计模式大全 Design pattern samples in Java(最经典最全的资料) 2015年06月19日 13:10:58 阅读数:11100 Design pattern sa ...
- [转]Design Pattern Interview Questions - Part 2
Interpeter , Iterator , Mediator , Memento and Observer design patterns. (I) what is Interpreter pat ...
- [转]Design Pattern Interview Questions - Part 3
State, Stratergy, Visitor Adapter and fly weight design pattern from interview perspective. (I) Can ...
- [转]Design Pattern Interview Questions - Part 1
Factory, Abstract factory, prototype pattern (B) What are design patterns? (A) Can you explain facto ...
- design pattern
1. visitor design pattern http://butunclebob.com/ArticleS.UncleBob.IuseVisitor
随机推荐
- django入门--django-blog-zinnia搭建个人博客
1.安装python 选择合适python2.7及以上版本安装https://www.python.org/downloads/ 2.建立虚拟环境 这不是必须的,但是建议使用,为每个项目单独引入依赖, ...
- TCP的状态兼谈Close_Wait和Time_Wait的状态
原文链接: http://www.2cto.com/net/201208/147485.html TCP的状态兼谈Close_Wait和Time_Wait的状态 一 TCP的状态: 1).LIST ...
- windows下phpstrom中xdebug的使用
https://laravel-china.org/articles/16425/windows-phpstorm-xdebug-breakpoint-debugging
- Linux打补丁的一些问题
linuxpatchlinux内核文档commandheader类unix操作系统有一个很有趣的特性就是源代码级的补丁包.在windows上我们打补丁都是运行一个可执行的程序,然后就可以把补丁打完了, ...
- Django 注册
一. 本地图片上传预览 1. 上传文件框隐藏到图片上面,点击图片相当于点上传文件框 <div class="login"> <div style="po ...
- mongo备份&恢复
1.备份数据: $mongodump -h 127.0.0.1 -u traderaccount -p kasumi -d traderaccount -o "/traderaccount& ...
- EasyUi – 2.布局Layout + 3.登录界面
1.页面布局 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="index.a ...
- python操作json数据格式--基础
非常基础的json库的用法,后续添加数据格式.编码等内容 参考文章 json进阶 Python的json模块提供了一种很简单的方式来编码和解码JSON数据. 其中两个主要的函数是 json.dumps ...
- 小甲鱼Python笔记(类)
类和对象 类的构造方法 def __init__(): 1 class People: 2 def __init__(self,name): 3 self.name = name 注意:在构造方法中的 ...
- 几类javascript常用的创建对象方法
JavaScript的一个重要功能就是面向对象的功能,通过基于对象的程序设计,可以用更直观.模块化和可重复使用的方式进行程序开发. 一组包含数据的属性和对属性中包含数据进行操作的方法,称为对象.比如要 ...