国家企业官方网站查询系统,怎么在拼多多上开网店卖东西,php网站中水印怎么做,做logo用什么网站单例模式
所谓单例模式#xff0c;就是确保一个类仅有一个实例#xff0c;并提供一个访问它的全局访问点。单例模式又分为饿汉式单例和懒汉式单例。
饿汉式
第一次引用该类的时候就创建对象实例#xff0c;而不管实际是否需要创建。
public class Test {private static …单例模式
所谓单例模式就是确保一个类仅有一个实例并提供一个访问它的全局访问点。单例模式又分为饿汉式单例和懒汉式单例。
饿汉式
第一次引用该类的时候就创建对象实例而不管实际是否需要创建。
public class Test {private static final Test instancenew Test();private Test(){}public static Test getInstance(){return instance;}
}懒汉式
什么时候用就什么时候创建实例存在线程安全问题。实例在开始时为空第一次加载后才实例化。
public class Test {private volatile static Test instancenull;private Test(){}public static Test getInstance(){if(instancenull) {instancenew Test();}return instance;}
}双层检测锁模式
双重锁模式是对饱汉模式的优化进行双重判断当已经创建过实例对象后就无需加锁。
public class Test {private volatile static Test instancenull;private Test(){}public static Test getInstance(){if(instancenull) {synchronized (Test.class){if(instancenull) {instancenew Test();}}}return instance;}
}工厂模式
工厂模式将创建对象的具体过程屏蔽隔离起来。工厂模式可以分为三类简单工厂模式、工厂方法模式、抽象工厂模式。
简单工厂模式
简单工厂模式最重要的就是定义一个创建对象的接口。 Pizza类
abstract class Pizza {public Pizza(){}
}public class FruitPizza extends Pizza{public FruitPizza() {System.out.println(水果披萨);}
}public class MeatPizza extends Pizza{public MeatPizza(){System.out.println(肉披萨);}
}工厂类
public class PizzaFactory {public Pizza createPizza(int type) {switch (type) {case 1:return new FruitPizza();case 2:return new MeatPizza();default:break;}return null;}
}工厂方法模式
承接上例中的Pizza类。 工厂类
interface FactoryPizza {Pizza createPizza();
}public class FactoryFruitPizza implements FactoryPizza{Overridepublic FruitPizza createPizza() {return new FruitPizza();}
}public class FactoryMeatPizza implements FactoryPizza {Overridepublic MeatPizza createPizza() {return new MeatPizza();}
}抽象工厂模式
相机相关类
//镜头
public interface Lens {}
public class LensA implements Lens{ public LensA(){ System.out.println(索尼镜头); }
} public class LensB implements Lens{ public LensB(){ System.out.println(佳能镜头); }
} //机身
public interface CameraBody {} public class CameraBodyA implements CameraBody{ public CameraBodyA(){ System.out.println(索尼机身); }
} public class CameraBodyB implements CameraBody{ public CameraBodyB(){ System.out.println(佳能机身); }
} 相机代理商类
public interface CameraFactory { public Lens createLens();public CameraBody createCameraBody();
} //生产索尼相机
public class FactorySONY implements CameraFactory{ Override public Lens createLens() { return new LensA(); } Override public CameraBody createCameraBody() { return new CameraBodyA(); }
} //佳能相机
public class FactoryCanon implements CameraFactory{ { Override public Lens createLens() { return new LensB(); } Override public CameraBody createCameraBody() { return new CameraBodyB(); }
} 建造者模式
建造者模式旨在把一个流程分解到不同的方法中避免某个方法过于繁重每个方法相互独立。 穿搭类
public class Dressing {private String clothes;private String shoes;public String getClothes() {return clothes;}public void setClothes(String clothes) {this.clothes clothes;}public String getShoes() {return shoes;}public void setShoes(String shoes) {this.shoes shoes;}
}穿搭构造类
public abstract class DressingBuilder {Dressing dressing new Dressing();public abstract void buildClothes();public abstract void buildShoes();public Dressing getDressing(){return dressing;}
}穿搭A、穿搭B。
public class DressingA extends DressingBuilder{public void buildClothes() {dressing.setClothes(衣服A);}public void buildShoes() {dressing.setShoes(鞋子A);}}public class DressingB extends DressingBuilder{public void buildClothes() {dressing.setClothes(衣服B);}public void buildShoes() {dressing.setShoes(鞋子B);}
}最后由构建人员搭配衣服
public class DressingPerson{private DressingBuilder dressingBuilder;public void setDressingBuilder(DressingBuilder dressingBuilder) {this.dressingBuilder dressingBuilder ;}public Dressing construct(){dressingBuilder.buildClothes();dressingBuilder.buildShoes();return dressingBuilder.getDressing();}
}