1.builder模式通过建造内部类来完成链式设计
package com.example.administrator.shejimoshi;
/**
* Created by Administrator on 2017/5/30 0030.
* 这是一个builer模式
*/
public class Person {
private String name;
private String age;
private String height;
private String score;
private Person(Builder builder){
this.age=builder.age;
this.name=builder.name;
this.height=builder.height;
this.score=builder.score;
}
static class Builder{
private String name;
private String age;
private String height;
private String score;
public Builder Name(String name) {
this.name = name;
return this;
}
public Builder Age(String age) {
this.age = age;
return this;
}
public Builder Height(String height) {
this.height = height;
return this;
}
public Builder Score(String score) {
this.score = score;
return this;
}
public Person build(){
return new Person(this);
}
}
}
在代码中可以这样建造person对象:
Person.Builder builder=new Person.Builder();
Person person=builder.Age("12")
.Height("175")
.Name("wang")
.Score("100")
.build();
2.策略模式:
根据不同类型建造不同对象执行不同方法:
package com.example.administrator.shejimoshi;
import android.util.Log;
/**
* Created by Administrator on 2017/5/30 0030.
* 这是一个策略模式
*/
public class Person2 {
enum MEN{
TEACHER,STUDENT,WOMEN;
}
private MEN men;
public Person2(MEN men) {
this.men=men;
}
public void study(){
switch (men){
case TEACHER:
Log.e( "study: ","teacher" );
break;
case STUDENT:
Log.e( "study: ","student" );
break;
case WOMEN:
Log.e( "study: ","women" );
break;
}
}
}
代码中可以这样使用:
Person2 person21=new Person2(Person2.MEN.STUDENT);
person21.study();
Person2 person22=new Person2(Person2.MEN.WOMEN);
person22.study();
Person2 person23=new Person2(Person2.MEN.TEACHER);
person23.study();
log可看出不同值执行了不同的方法:
05-30 22:33:47.471 25836-25836/com.example.administrator.shejimoshi E/study:: student
05-30 22:33:47.471 25836-25836/com.example.administrator.shejimoshi E/study:: women
05-30 22:33:47.471 25836-25836/com.example.administrator.shejimoshi E/study:: teacher
3.克隆模式比较简单
只需实现接口:
package com.example.administrator.shejimoshi;
import android.util.Log;
/**
* Created by Administrator on 2017/5/30 0030.
* 安卓中的克隆模式的使用
*/
public class Person3 implements Cloneable {
String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void print(){
Log.e( "print: ",name);
}
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
}
代码中可这么使用:
Person3 person3=new Person3();
person3.setName("wang");
try {
person4 = ((Person3) person3.clone());
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
person3.print();
person4.print();
person3.setName("11");
person4.setName("22");
person3.print();
person4.print();
log可看出这两个是不同的对象了:
05-30 22:33:47.471 25836-25836/com.example.administrator.shejimoshi E/print:: wang
05-30 22:33:47.471 25836-25836/com.example.administrator.shejimoshi E/print:: wang
05-30 22:33:47.471 25836-25836/com.example.administrator.shejimoshi E/print:: 11
05-30 22:33:47.471 25836-25836/com.example.administrator.shejimoshi E/print:: 22