实在是不知道关于设计模式这个问题怎么总结,因为看书遇到了,使用外观设计模式的问题!这里就顺带着说些吧!
我就不明确定义了,这个模式在很多框架中都会使用
首先就是顾名思义,“外观” 假设我们有个收音机吧,我做了这个收音机,目的是让用户听,但是我不想让你知道系统中的细节,或者是系统中的很多细节对于一个用户来说是没有必要知道的,毕竟不是谁都是geek对吧!
那我怎么办呢?我会做个壳子,然后弄些按钮,目的是什么呢?目的就是让作为用户的你只能点点按按什么的,不让你直接调整我其中的参数。
这样一个典型的外观设计模式就出来了。
为子系统的部分或者全部接口提供一个统一的访问接口 ,当然我们要访问的统一接口也就是外观啦
UML图俺就不画了,来点代码看看吧~
先是Client的
package com.baobaoyeye.test;
import com.baobaoyeye.test.facade.Facade;
/**
* @author baobaoyeye
*
*/
public class Client {
private Facade facade = new Facade();
/**
* @param args
*/
public static void main(String[] args) {
Client client = new Client();
client.facade.Run();
client.facade.Pause();
client.facade.Stop();
}
}
package com.baobaoyeye.test.facade;
/**
* @author baobaoyeye
*
*/
public class Facade {
private Sub1 run = new Sub1();
private Sub2 pause = new Sub2();
private Sub3 stop = new Sub3();
public void Run(){
run.InitSub1();
run.Run();
run.DestorySub1();
}
public void Pause(){
pause.InitSub2();
pause.Pause();
pause.DestorySub2();
}
public void Stop(){
stop.InitSub3();
stop.Stop();
stop.DestorySub3();
}
}
package com.baobaoyeye.test.facade;
/**
* @author baobaoyeye
*
*/
public class Sub1 {
public void InitSub1(){
System.out.println("init sub1");
}
public void Run(){
System.out.println("running");
}
public void DestorySub1(){
System.out.println("destory sub1");
}
}
package com.baobaoyeye.test.facade;
/**
* @author baobaoyeye
*
*/
public class Sub2 {
public void InitSub2(){
System.out.println("init sub2");
}
public void Pause(){
System.out.println("Paused");
}
public void DestorySub2(){
System.out.println("destory sub2");
}
}
package com.baobaoyeye.test.facade;
/**
* @author baobaoyeye
*
*/
public class Sub3 {
public void InitSub3(){
System.out.println("init sub3");
}
public void Stop(){
System.out.println("stoped");
}
public void DestorySub3(){
System.out.println("destory sub3");
}
}