您的位置:首页 > 其它

设计模式--外观模式

2018-09-25 22:27 232 查看

 

 

代码说明:

package com.java.jikexueyuan.facademode.hometheater;
//爆米花
public class Popcorn {

//单例模式,构造函数私有化
private static Popcorn instance = null;

private Popcorn() {

}
//单例模式创建实例
public static Popcorn getInstance() {
if (instance == null) {
instance = new Popcorn();
}

return instance;
}

public void on() {
System.out.println("Popcorn On");
}

public void off() {
System.out.println("Popcorn Off");
}

public void pop() {
System.out.println("Popcorn is popping");
}

}
package com.java.jikexueyuan.facademode.hometheater;
//DVD播放器
public class DVDPlayer {

private static DVDPlayer instance = null;

private DVDPlayer() {

}

public static DVDPlayer getInstance() {
if (instance == null) {
instance = new DVDPlayer();
}

return instance;
}

public void on() {
System.out.println("DVDPlayer On");
}

public void off() {
System.out.println("DVDPlayer Off");
}

public void play() {
System.out.println("DVDPlayer is playing");
}

public void pause() {
System.out.println("DVDPlayer  pause");
}

public void setdvd() {
System.out.println("DVDPlayer  is setting dvd");
}
}
package com.java.jikexueyuan.facademode.hometheater;
//投影仪
public class Projector {
private int size=5;

private static Projector instance = null;

private Projector() {

}

public static Projector getInstance() {
if (instance == null) {
instance = new Projector();
}

return instance;
}

public void on() {
System.out.println("Projector On");
}

public void off() {
System.out.println("Projector Off");
}

public void focus() {
System.out.println("Popcorn is focus");
}

public void zoom(int size) {
this.size=size;
System.out.println("Popcorn zoom to"+size);
}

}
package com.java.jikexueyuan.facademode.hometheater;
//屏幕
public class Screen {

private static Screen instance = null;

private Screen() {

}

public static Screen getInstance() {
if (instance == null) {
instance = new Screen();
}

return instance;
}

public void up() {
System.out.println("Screen  up");
}

public void down() {
System.out.println("Screen  down");
}

}
package com.java.jikexueyuan.facademode.hometheater;
//音响
public class Stereo {

private static Stereo instance = null;
private int volume = 5;

private Stereo() {

}

public static Stereo getInstance() {
if (instance == null) {
instance = new Stereo();
}

return instance;
}

public void on() {
System.out.println("Stereo On");
}

public void off() {
System.out.println("Stereo Off");
}

public void setVolume(int vol) {

volume = vol;
System.out.println("the volume of Stereo is set to  " + volume);
}

public void addVolume() {
if (volume < 11) {
volume++;
setVolume(volume);
}

}

public void subVolume() {
if (volume > 0) {
volume--;
setVolume(volume);
}

}

}
package com.java.jikexueyuan.facademode.hometheater;
//灯光
public class TheaterLights {

private static TheaterLights instance = null;

private TheaterLights() {

}

public static TheaterLights getInstance() {
if (instance == null) {
instance = new TheaterLights();
}

return instance;
}

public void on() {
System.out.println("TheaterLights On");
}

public void off() {
System.out.println("TheaterLights Off");
}

public void dim(int d) {
System.out.println("TheaterLights dim to " + d + "%");
}

public void bright() {
dim(100);
System.out.println("TheaterLights bright");
}
}
package com.java.jikexueyuan.facademode.hometheater;
//外观模式--遥控器
public class HomeTheaterFacade {
private TheaterLights mTheaterLights;
private Popcorn mPopcorn;
private Stereo mStereo;
private Projector mProjector;
private Screen mScreen;
private DVDPlayer mDVDPlayer;
//组合对象功能
public HomeTheaterFacade() {
mTheaterLights = TheaterLights.getInstance();
mPopcorn = Popcorn.getInstance();
mStereo = Stereo.getInstance();
mProjector = Projector.getInstance();
mScreen = Screen.getInstance();
mDVDPlayer = DVDPlayer.getInstance();
}

public void ready() {
mPopcorn.on();
mPopcorn.pop();
mScreen.down();
mProjector.on();
mStereo.on();
mDVDPlayer.on();
mDVDPlayer.setdvd();
mTheaterLights.dim(10);
}

public void end() {
mPopcorn.off();
mTheaterLights.bright();
mScreen.up();
mProjector.off();
mStereo.off();

mDVDPlayer.setdvd();
mDVDPlayer.off();

}
//单个对象功能
public void play() {
mDVDPlayer.play();
}

public void pause() {
mDVDPlayer.pause();
}
}
package com.java.jikexueyuan.facademode;

import com.java.jikexueyuan.facademode.hometheater.HomeTheaterFacade;

//代码测试
public class MainTest {
public static void main(String[] args) {
HomeTheaterFacade mHomeTheaterFacade=new HomeTheaterFacade();

mHomeTheaterFacade.ready();
mHomeTheaterFacade.play();
}
}

 最少知识原则

最少知识原则:尽量减少对象之间的交互,只留几个“密友” 项目设计中就是不要让太多的类耦合在一起

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: