设计模式
设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的;设计模式使代码编制真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。
单例设计模式
构造方法私有,提供创建对象的方法,保证对象单一
懒汉式
调用时才会创建对象
//懒汉式
public class King {
private static King k;
// 构造方法私有
private King() {
}
public static King getInstance() {
if (k == null) {
k = new King();
}
return k;
}
}
饿汉式
类初始化时创建一个对象
//饿汉式
public class King2 {
private static King2 k2 = new King2();
private King2() {
}
public static King2 getInstance() {
return k2;
}
}
SingleDemo.java
//单例设计模式
public class SingleDemo {
public static void main(String[] args) {
System.out.println(King.getInstance());
System.out.println(King.getInstance());
System.out.println(King2.getInstance());
System.out.println(King2.getInstance());
}
}
静态工厂设计模式
定义一个人类接口,具有说话的功能
public interface Human {
void speak();
}
八卦炉用来制作人
public class BaGuaLu {
private static BaGuaLu baGuaLu = new BaGuaLu();
private BaGuaLu() {
}
public static BaGuaLu getInstance() {
return baGuaLu;
}
public Human makePerson(String peopleColor) {
Human human = null;
switch (peopleColor) {
case "黑":
human = new Human() {
@Override
public void speak() {
System.out.println("我是黑种人");
}
};
break;
case "白":
human = new Human() {
@Override
public void speak() {
System.out.println("我是白种人");
}
};
break;
case "黄":
human = new Human() {
@Override
public void speak() {
System.out.println("我是黄种人");
}
};
break;
default:
break;
}
return human;
}
}
女娲开始造人,传递要造的肤色给八卦炉
//静态工厂设计模式
public class NvWa {
public static void main(String[] args) {
BaGuaLu baGuaLu = BaGuaLu.getInstance();
Human black = baGuaLu.makePerson("黑");
black.speak();
Human white = baGuaLu.makePerson("白");
white.speak();
Human yellow = baGuaLu.makePerson("黄");
yellow.speak();
}
}
上面的八卦炉就像一个工厂,调用里面的方法就能得到想要的东西