外观模式
- 也叫过程模式:外观模式为子系统中的一组接口提供一个一致的界面.此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用
- 外观模式通过定义一个一致的接口,用以屏蔽内部子系统的细节,使得调用端口只需跟这个接口发生调用,而无序关系这个子系统的内部细节
- 角色:
- 外观类:为调用提供同一的调用接口,外观类知道那些子系统负责处理请求,从而j将调用端的请求代理给适当子系统对象
- 调用者:外观接口的调用者
- 子系统的聚合:指模块或者子系统,处理facade(外观类)对象指派的任务,他是功能的提供者
class DVDPlayer{
private static DVDPlayer instance=new DVDPlayer();
static DVDPlayer getInstance(){return instance;}
void on(){sout("dvd on");}
void off(){sout("dvd off");}
void play(){sout("dvd play");}
void pause(){sout("dvd pause");}
}
class Popcorn{
private static Popcorn instance=new Popcorn();
static Popcorn getInstance(){return instance;}
void on(){sout("popcorn on");}
void off(){sout("popcorn off");}
void pop(){sout("popcorn pop");}
}
class Projector{
private static Projector instance=new Projector();
static Projector getInstance(){return instance;}
void on(){sout("projector on");}
void off(){sout("projector off");}
void focus(){sout("projector focus");}
}
class Screnn{
private static Screnn instance=new Screnn();
static Screnn getInstance(){return instance;}
void up(){sout("screnn up");}
void down(){sout("screnn down");}
}
class Stereo{
private static Stereo instance=new Stereo();
static Stereo getInstance(){return instance;}
void on(){sout("stereo on");}
void off(){sout("stereo off");}
void up(){sout("stereo up");}
void down(){sout("stereo down");}
}
class Light{
private static Light instance=new Light();
static Light getInstance(){return instance;}
void on(){sout("light on");}
void off(){sout("light off");}
void dim(){sout("light dim");}
void bright(){sout("light bright");}
}
class Theater{
//定义各个子系统对象
private Light light;
private Screen screen;
private Stereo stereo;
private DVDPlayer dvdPlayer;
private Projector projector;
Theater(){
this.light=Light.getInstance();
this.screen=Screen.getInstance();
this.stereo=Stereo.getInstance();
this.dvdPlayer=DVDPlayer.getInstance();
this.projector=Projector.getInstance();
}
void read(){
popcorn.on();
popcorn.pop();
screen.down();
projector.on();
stereo.on();
dvd.on();
}
void end(){
all.end();
}
psvm(){
}
}
class mian{
psvm(){
TheaterFacade theater=new TheaterFacade();
theater.on()
theater.end()
}
}
Mybatis中的外观模式