常见三种设计模式

1:builder工厂模式
通过平时对代码的总结和优化,我们经常可以将原先复杂的代码改写成简单易懂的代码,增强代码可读性,builder模式主要用于复杂对象的构造,通过使用builder模式可以减少构造器或方法调用传入的参数数量,对很多配置参数进行初始化的对象来说尤其适用。
下面举个常规的例子
Student s=new Student();
s.setName("张三");
s.setIsBoy(true);
s.setHight(false)
xxxxxx
xxxxxx
第二种常规的例子(多参构造方法)
Student s=new Student("张三",true,false);
如果用builder模式的话:
Student s=new Student.Builder(this).name("张三").isboy(true).hight(false).build();
实体Student应该这样写
public class Student{
string name;
boolean isboy;
boolean hight;
xxxxxxxx.....
Student (Context context,string name,boolean isboy,boolean hight);
public Student class Builder{
private string name;
private boolean isboy;
private biolean hight;
public Student.Builder name(string name){
this.name=name;
return this;
}
public Student.Builder isboy(boolean isboy){
this.isboy=isboy;
return this;
}
public Student.Builder hight(boolean hight){
this.hight=hight;
return this;
}
public Student build(){
return new Student(context,this.name,this.isboy,this.hight)
}
}
**备注:
Builder类暂存了外界传入的参数,然后在build方法中,通过调用目标类的构造方法来生成对象。
**
2:观察者模式

常见三种设计模式_第1张图片
图片发自App

常见三种设计模式_第2张图片
图片发自App

这里图片可以说明完整的使用方法,相比回调的话,观察者是一个事件可以触发多个观察者,回调就是一对一,在实现observer接口后需要实现接口中的update方法,然后参数中的observable赋值给自己定义的事件中,通过get取到传过来的值。
3:策略模式
先看一张图理解下
常见三种设计模式_第3张图片
图片发自App

下面具体说说,首先我们定义了一个照明的接口,里面有一个照明方法,然后定义三个类分别继承照明接口,之后我们定义一个任务类,申明接口,提供一个外部可调用的方法,接收到底是用什么方式来照明。和一个可供外部调用的实现类.照明方法,最后就是如果使用不同的方式来照明了,首先new三个不同照明方式,然后new一个房子变亮任务,调用任务中的照明方式,把手电筒传过去,然后调用任务类.接口照明方法,来实现照明。这种用法的目的就在于可扩展性,如果来了第四种照明方式,我们可以直接添加类实现,然后调用方法,不需要重新写照明方法,也不需要用过多的if esle来判断是哪种照明方式了。

你可能感兴趣的