[置顶] android应用开发设计模式之原型模式

 下面我们来学习下原型模式

原型模式:用原型实例制定创建对象的种类,并且通过拷贝这些原型创建新的对象。

新建赛车的接口:

public interface car_interface {
    public void start();
    public void stop();
}
新建宝马汽车的实现类:
package com.jindegege.car;
import com.jindegege.fitting.car_tyre;
import com.jindegege.service.car_interface;


	public class bmw_impl implements car_interface, Cloneable {
	    private car_tyre car_tyre_ref;
	    private bmw_impl bmw;
	    public void start() {
	       

	    }

	    public void stop() {
	       

	    }

	    public car_tyre getCar_tyre_ref() {
	        return car_tyre_ref;
	    }

	    public void setCar_tyre_ref(car_tyre car_tyre_ref) {
	        this.car_tyre_ref = car_tyre_ref;
	    }

	    @Override
	    public Object clone() throws CloneNotSupportedException {
	        super.clone();
	        bmw = new bmw_impl();
	        bmw.setCar_tyre_ref(new car_tyre());

	        return bmw;
	    }

}

新建宝马的配件轮胎类在宝马汽车实现类中需要注意的是将原来protected类型的clone方法要变成public,这样才可以对外公开,可以被调用,将秘密公开化。

package com.jindegege.fitting;

public class car_tyre {

    private String name = "德国制造原版轮胎";

    public String getName() {
        return name;
    }
}


新建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"
         />
    <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"
        />

</LinearLayout>
下面是activity
package com.jindegege.activity;

import com.jindegege.car.bmw_impl;
import com.jindegege.fitting.car_tyre;


import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
import android.widget.Toast;

public class PrototypeActivity extends Activity {
   private bmw_impl bmw1;
   private bmw_impl bmw2;
   private TextView textview01;
   private TextView textview02;
   private TextView textview03;
   private TextView textview04;
   
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        try {
			textview01= (TextView)findViewById(R.id.textview01);
			textview02=(TextView)findViewById(R.id.textview02);
			textview03= (TextView)findViewById(R.id.textview03);
			textview04=(TextView)findViewById(R.id.textview04);
			bmw1 = new bmw_impl();
			bmw1.setCar_tyre_ref(new car_tyre());
			textview01.setText("我的宝马参数是:" + bmw1);
			textview02.setText("我的宝马的轮胎参数是:" + bmw1.getCar_tyre_ref());
			bmw2 = (bmw_impl) bmw1.clone();
			textview03.setText("他人的宝马的参数是:" + bmw2);
			textview04.setText("他人的宝马的参数是:" + bmw2);
		} catch (CloneNotSupportedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
        
    }

 }

下面是效果图:

[置顶] android应用开发设计模式之原型模式_第1张图片


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


   

你可能感兴趣的:(设计模式,android,String,layout,Class,interface)