android应用开发设计模式之策略模式
来源:互联网 发布:桃子直播软件 编辑:程序博客网 时间:2024/05/21 09:46
策略模式: 指对象有某个行为,但是在不同的场景中,该行为有不同的实现演算法。
新建一个轮胎接口:
package com.jindegege.strategy_interface;public interface tyre_interface { public String print_tyre_line();// 显示出轮胎的痕迹}
新建2个轮胎接口的实现类:
package com.jindegege.tyre_impl;import com.jindegege.strategy_interface.tyre_interface;public class Tyre_long_impl implements tyre_interface{@Overridepublic String print_tyre_line() {// TODO Auto-generated method stubreturn "在路面上显示一个长轮胎痕迹";}}
package com.jindegege.tyre_impl;import com.jindegege.strategy_interface.tyre_interface;public class Tyre_short_impl implements tyre_interface {@Overridepublic String print_tyre_line() {// TODO Auto-generated method stubreturn "在路面上显示一个短轮胎痕迹";}}
基于一个轮胎接口来实现不同样式的轮胎样式。
组装一个Car车类:
package com.jindegege.car;import java.util.HashMap;import java.util.Map;import com.jindegege.strategy_interface.tyre_interface;public class Car { private String make_address;// 制造地 private int death_year;// 车子使用年限 private int speed;// 速度 private tyre_interface tyre_interface_ref;// 轮胎的样式 public String getMake_address() { return make_address; } public void setMake_address(String make_address) { this.make_address = make_address; } public int getDeath_year() { return death_year; } public void setDeath_year(int death_year) { this.death_year = death_year; } public int getSpeed() { return speed; } public void setSpeed(int speed) { this.speed = speed; } public tyre_interface getTyre_interface_ref() { return tyre_interface_ref; } public void setTyre_interface_ref(tyre_interface tyre_interface_ref) { this.tyre_interface_ref = tyre_interface_ref; } public Map<String,String> start() { Map<String,String> data=new HashMap<String,String>(); data.put("data1", "Car 起动了!"); data.put("data2", "Car高速行驶,遇到一个大转弯,路面显示:"+this.getTyre_interface_ref().print_tyre_line()); return data; }}
新建一个android客户端xml文件以及一个activity类
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/textview01" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> <TextView android:id="@+id/textview02" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <TextView android:id="@+id/textview03" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <TextView android:id="@+id/textview04" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <TextView android:id="@+id/textview05" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <TextView android:id="@+id/textview06" android:layout_width="fill_parent" android:layout_height="wrap_content" /></LinearLayout>
主activity类:
import android.widget.TextView;public class StrategyActivity extends Activity { private TextView textview01; private TextView textview02; private TextView textview03; private TextView textview04; private TextView textview05; private TextView textview06; private Tyre_long_impl tyre_long_impl; private Tyre_short_impl tyre_short_impl; private Map<String,String> data; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); textview01=(TextView)findViewById(R.id.textview01); textview02=(TextView)findViewById(R.id.textview02); textview03=(TextView)findViewById(R.id.textview03); textview04=(TextView)findViewById(R.id.textview04); textview05=(TextView)findViewById(R.id.textview05); textview06=(TextView)findViewById(R.id.textview06); tyre_long_impl = new Tyre_long_impl(); tyre_short_impl = new Tyre_short_impl(); Car car = new Car(); car.setDeath_year(10); car.setMake_address("广东深圳") ; car.setSpeed(250); car.setTyre_interface_ref(tyre_long_impl); if(textview01!=null&&car.getMake_address()!=null){ textview01.setText(car.getMake_address()); } if(textview02!=null){ textview02.setText(new Integer(car.getSpeed()).toString()); } if(textview03!=null){ textview03.setText(new Integer(car.getDeath_year()).toString()); } data= car.start(); if(textview04!=null&&data.get("data1")!=null){ textview04.setText(data.get("data1").toString()); } if(textview05!=null&&data.get("data2")!=null){ textview05.setText(data.get("data2").toString()); } }}
实现的简单效果:
让车跑起来,并且具有更换轮胎样式的功能:是一个长轮胎痕迹,但在程序中可以使用代码:car.setTyre_interface_ref(tyre_long_impl);来对轮胎的样式进行不同的替换,可以替换成短轮胎痕迹的汽车轮胎,这样在不更改Car类的前题下进行了不同轮胎样式的改变,轮胎和轮胎之间可以互相替换,这就是策略模式。
源代码下载地址:http://download.csdn.net/detail/jindegegesun/4093606
- android应用开发设计模式之策略模式
- android应用开发设计模式之策略模式
- 设计模式在android中的应用之2,策略模式
- Android开发框架/库学习,设计模式之策略模式
- Spring 设计模式之策略模式应用
- Android设计模式应用--策略模式
- android设计模式之策略模式
- Android 设计模式之策略模式
- Android 设计模式之策略模式
- Android设计模式之策略模式
- Android设计模式之策略模式
- Android设计模式之策略模式
- Android 常用设计模式之 -- 策略模式
- Android 设计模式之策略模式
- android应用开发设计模式之代理模式
- android应用开发设计模式之原型模式
- android应用开发设计模式之外观模式
- android应用开发设计模式之代理模式
- Asp.net 将DataGrid分多个Sheet导出Excel
- ASP.NET服务端不装Office 操作Excel NPOI 3
- Extjs grid 单元格背景色
- 笔记本无线路由组件的局域网ping不通的问题
- SQLServer事务的隔离级别
- android应用开发设计模式之策略模式
- Hibernate二级缓存配置
- Myeclipse中安装TFS插件
- php可以在类的定义外部添加属性
- Java引用总结(强,软,弱,虚)
- CIFS samba通用Internet文件系统
- AsyncTask生命周期和生命周期各部分的作用
- Android Webkit 解读 WebKit – WebKit For Android
- JSP中getParameter和getAttribute区别