2019独角兽企业重金招聘Python工程师标准>>>
觉得代码写的别扭了,回头翻翻java 的23种设计模式。
today,额,这么晚了,困了。就弄个最简单的单例模式吧。
单例模式:俗称单身狗
package singleton;
public class SingleTon {
private static final class SingleTonBuilder {
private static SingleTon singleTon = new SingleTon();
}
private SingleTon() {
}
public static SingleTon getInstance() {
return SingleTonBuilder.singleTon;
}
}
其实什么懒汉,饿汉,痴汉模式之类的都不用管,只要会这一种就够了。
跟singleton 很像的一个模式三single call 。
中文解释就单调用,通俗的说就是只有某人才能使用某物。
给个场景,HumanWang, WangWife
老王,和老王老婆。
老王老婆有一项技术叫mkl,但是这项技术只能老王才能用,
先看老王:
package singlecall;
public class HumanWang {
//口号,是王妃么 ?石更么。。
private boolean shiGeng = false;
//防止老王的儿子之类(子类重写)冒充
public final boolean isShiGeng () {
return shiGeng ;
}
//获取王妃,
private WangWife getWangWife() {
WangWife vivian;
shiGeng = true;//是王妃,石更了。
vivian = WangWife.getWangWife(this);
shiGeng = false;//获得王妃后其他的都不是了。车欠了。
return vivian;
}
public static void main(String[] args) {
HumanWang hw=new HumanWang();
WangWife vivian =hw.getWangWife();
vivian.mkl();
}
}
在看老王老婆,俗称王妃:
package singlecall;
public class WangWife {
//身体是自己的,不能随便给人看
private WangWife() {
}
//当然谁都能企图获取王妃的身体,不过王妃只给老王一个人,如果有人用修改字节码方式强xx,
//这个只能报警了。
public static WangWife getWangWife(HumanWang hw) {
WangWife vivian;
//有没有人
if (hw == null) {
vivian = null;
} else {
//口号正确不正确 ,有没有石更
if (hw.isShiGeng ()) {
vivian = new WangWife();
} else {
vivian = null;
}
}
return vivian;
}
//王妃的技术。
public void mkl() {
System.out.println("啪啪啪");
}
}
这样就只有老王才能获取王妃,然后王妃施展技术。
ps 后记:
不要说我代码写的污,咱用的是面向对象的思想。