一、工厂模式
1、就是把所有的类交给一个类(命名为创建类)进行创建 。
2、创建类通过构造方法传入的参数进行判断创建哪个类
二、单例模式
1、就是在类中就把自己new出来了
2、通过一个static 方法来获取自己new出来的对象并赋值
三、建造者模式
1、就是在类里面建一个内部类
2、对内部类进行赋值的时候返回this,最后赋值完成之后进行new 一下
3、另外 菜鸟教程的 跟这个差不多 但是贼复杂 用的list 不如这种!!!!
//建造者代码
public class Computer {
private final String cpu;//必须
private final String ram;//必须
private final int usbCount;//可选
private final String keyboard;//可选
private final String display;//可选
private Computer(Builder builder){
this.cpu=builder.cpu;
this.ram=builder.ram;
this.usbCount=builder.usbCount;
this.keyboard=builder.keyboard;
this.display=builder.display;
}
public static class Builder{
private String cpu;//必须
private String ram;//必须
private int usbCount;//可选
private String keyboard;//可选
private String display;//可选
public Builder(String cup,String ram){
this.cpu=cup;
this.ram=ram;
}
public Builder setUsbCount(int usbCount) {
this.usbCount = usbCount;
return this;
}
public Builder setKeyboard(String keyboard) {
this.keyboard = keyboard;
return this;
}
public Builder setDisplay(String display) {
this.display = display;
return this;
}
public Computer build(){
return new Computer(this);
}
}
//省略getter方法
}
//此下为调用
Computer computer=new Computer.Builder("因特尔","三星")
.setDisplay("三星24寸")
.setKeyboard("罗技")
.setUsbCount(2)
.build();
四、原型模式(创建重复的对象)
(我感觉是就把对象放数组里调用 【小声逼逼】)
1、创建一个实现 Cloneable 接口的抽象类。
2、对抽象类实例化
3、关键类 里面放一个list 写个方法把抽象类实例化的东西放入数组
4、在关键类写个方法直接调用就可以了
//抽象类。
public abstract class Shape implements Cloneable {
private String id;
protected String type;
abstract void draw();
public String getType(){
return type;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public Object clone() {
Object clone = null;
try {
clone = super.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return clone;
}
}
//关键类
import java.util.Hashtable;
public class ShapeCache {
private static Hashtable<String, Shape> shapeMap
= new Hashtable<String, Shape>();
public static Shape getShape(String shapeId) {
Shape cachedShape = shapeMap.get(shapeId);
return (Shape) cachedShape.clone();
}
// 对每种形状都运行数据库查询,并创建该形状
// shapeMap.put(shapeKey, shape);
// 例如,我们要添加三种形状
public static void loadCache() {
Circle circle = new Circle();
circle.setId("1");
shapeMap.put(circle.getId(),circle);
Square square = new Square();
square.setId("2");
shapeMap.put(square.getId(),square);
Rectangle rectangle = new Rectangle();
rectangle.setId("3");
shapeMap.put(rectangle.getId(),rectangle);
}
}
五、适配器模式
1、创建原本的类,跟我们需要适配的接口
2、创建类(适配器类,继承了被适配类,同时实现标准接口)
3、实例化接口的时候其实掉的还是适配接口的方法