外观模式
2015-11-12 20:52
302 查看
外观模式(Facade),为子系统中的一组接口提供一个一致的界面,定义一个高层接口,这个接口使得这一子系统更加容易使用。
在以下情况下可以考虑使用外观模式:
(1)设计初期阶段,应该有意识的将不同层分离,层与层之间建立外观模式。
(2) 开发阶段,子系统越来越复杂,增加外观模式提供一个简单的调用接口。
(3) 维护一个大型遗留系统的时候,可能这个系统已经非常难以维护和扩展,但又包含非常重要的功能,为其开发一个外观类,以便新系统与其交互。
代码java
package 外观模式;
class Pay{
public String pay(){
String food ="food";
System.out.println("u hava payed,this is your food");
return food;
}
}
class Cook{
public String co(String food){
System.out.println("cooker is cooking");
return food;
}
}
class Waiter{
public void wa(String food){
System.out.println(food+" is done");
}
}
class Facade{
Pay p;
Cook c;
Waiter w;
public Facade(){
p=new Pay();
c=new Cook();
w=new Waiter();
}
public void ser(){
String f=p.pay();
f=c.co(f);
w.wa(f);
}
}
public class Test1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//不使用外观模式
Pay p=new Pay();
Cook c=new Cook();
Waiter w=new Waiter();
String f=p.pay();
f=c.co(f);
w.wa(f);
//使用外观模式
Facade fa=new Facade();
fa.ser();
}
}
在以下情况下可以考虑使用外观模式:
(1)设计初期阶段,应该有意识的将不同层分离,层与层之间建立外观模式。
(2) 开发阶段,子系统越来越复杂,增加外观模式提供一个简单的调用接口。
(3) 维护一个大型遗留系统的时候,可能这个系统已经非常难以维护和扩展,但又包含非常重要的功能,为其开发一个外观类,以便新系统与其交互。
代码java
package 外观模式;
class Pay{
public String pay(){
String food ="food";
System.out.println("u hava payed,this is your food");
return food;
}
}
class Cook{
public String co(String food){
System.out.println("cooker is cooking");
return food;
}
}
class Waiter{
public void wa(String food){
System.out.println(food+" is done");
}
}
class Facade{
Pay p;
Cook c;
Waiter w;
public Facade(){
p=new Pay();
c=new Cook();
w=new Waiter();
}
public void ser(){
String f=p.pay();
f=c.co(f);
w.wa(f);
}
}
public class Test1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//不使用外观模式
Pay p=new Pay();
Cook c=new Cook();
Waiter w=new Waiter();
String f=p.pay();
f=c.co(f);
w.wa(f);
//使用外观模式
Facade fa=new Facade();
fa.ser();
}
}
相关文章推荐
- 报错:HTTP Status 500 -Method "execute" failed for object……
- 读《大道至简》有感(结束)
- (转)优秀的 python 机器学习库
- java中重载,覆盖和隐藏的区别
- objective-c系列-动态类型和动态绑定
- Android 开发的17个建议,紧跟Google官方,进阶必看!
- 结合C++和GDAL实现shapefile(shp)文件的创建和写入
- iOS开发者一些有用的技术博客、设计文章、网站
- 11.12 好记性与烂笔头
- 找滑动窗口的中位数
- [linux] make
- leetcode 68:Text Justification细致分析,java实现
- git commit 时检查comment消息格式
- mingw gcc window socket server
- for 命令挖坑
- iOS8+ alert view导致回退键盘闪现的解决
- git rebase -i HEAD
- hdu 3635
- javascript 中的 true 或 false
- 时空权衡之输入增强 ----字符串匹配算法Horspool算法和Boyer-Moore算法