android设计模式--外观模式

外观模式:提供了一个统一的接口,用来访问子系统中的一群接口。

[java]  view plain copy
  1. public class Car {  
  2.     public String start() {  
  3.     return "车子已启动";  
  4.     }  
  5.   
  6.     public String check_stop() {  
  7.     return "检查刹车";  
  8.     }  
  9.   
  10.     public String check_box() {  
  11.     return "检查油箱";  
  12.     }  
  13.   
  14.     public String check_console() {  
  15.     return "检查仪表盘";  
  16.     }  
  17. }  

2、新建一个外观类(该类提供了一个统一的接口用来访问Car类的接口方法)

[java]  view plain copy
  1. public class Facade {  
  2.     public Map<String, String> car_do(Car car) {//统一的接口 方法   
  3.         Map<String,String> data= new HashMap<String,String>();  
  4.         /** 
  5.          * 用来访问子系统中的一群接口方法 
  6.         */   
  7.         String data1=car.check_box();  
  8.     String data2=car.check_console();  
  9.     String data3=car.check_stop();  
  10.     String data4=car.start();  
  11.     data.put("data1", data1);  
  12.     data.put("data2", data2);  
  13.     data.put("data3", data3);  
  14.     data.put("data4", data4);  
  15.     return data;  
  16.     }  
  17. }  

3、新建android客户端,给出xml以及activity:

[html]  view plain copy
  1. <?xml version="1.0" encoding="utf-8"?>   
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"   
  3.     android:layout_width="fill_parent"   
  4.     android:layout_height="fill_parent"   
  5.     android:orientation="vertical" >   
  6.     <TextView   
  7.     android:id="@+id/textview01"   
  8.     android:layout_width="fill_parent"   
  9.     android:layout_height="wrap_content"   
  10.     android:text="@string/hello" />   
  11.     <TextView   
  12.     android:id="@+id/textview02"   
  13.     android:layout_width="fill_parent"   
  14.     android:layout_height="wrap_content" />   
  15.     <TextView   
  16.     android:id="@+id/textview03"   
  17.     android:layout_width="fill_parent"   
  18.     android:layout_height="wrap_content" />   
  19.     <TextView   
  20.     android:id="@+id/textview04"   
  21.     android:layout_width="fill_parent"   
  22.     android:layout_height="wrap_content" />   
  23. </LinearLayout>  

主activity类:

[java]  view plain copy
  1. public class FacadeActivityextends Activity {  
  2.     private TextView textview01;  
  3.     private TextView textview02;  
  4.     private TextView textview03;  
  5.     private TextView textview04;  
  6.     private Facade car_impl;  
  7.     private Map<String, String> data;  
  8.     @Override   
  9.     public void onCreate(Bundle savedInstanceState) {  
  10.     super.onCreate(savedInstanceState);  
  11.     setContentView(R.layout.main);  
  12.     textview01=(TextView)findViewById(R.id.textview01);  
  13.     textview02=(TextView)findViewById(R.id.textview02);  
  14.     textview03=(TextView)findViewById(R.id.textview03);  
  15.     textview04=(TextView)findViewById(R.id.textview04);  
  16.     car_impl=new Facade();  
  17.     data=car_impl.car_do(new Car());  
  18.     if(textview01!=null&&data.get("data1")!=null){  
  19.         textview01.setText(data.get("data1").toString());  
  20.     }  
  21.     if(textview02!=null&&data.get("data2")!=null){  
  22.         textview02.setText(data.get("data2").toString());  
  23.     }  
  24.     if(textview03!=null&&data.get("data3")!=null){  
  25.         textview03.setText(data.get("data3").toString());  
  26.     }  
  27.     if(textview04!=null&&data.get("data4")!=null){  
  28.         textview04.setText(data.get("data4").toString());  
  29.     }  
  30.     }  
  31. }  

下面看看实现的简单效果:

是不是感觉很简单啊,将子操作用一个外观接口封装起来,然后调用这个接口就可以调用那些非常复杂的微操作了。

源代码下载地址:http://download.csdn.net/detail/jindegegesun/4093597

source link:http://blog.csdn.net/jindegegesun/article/details/7297172


http://blog.csdn.net/jackhenry/article/details/7344577

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值