day07设计模式
1、单例模式
饿汉式:用空间换时间
/**
* 饿汉式单例模式
* @author mjt
*
*/
public class HungrySingleton {
private static HungrySingleton hs = new HungrySingleton();
private HungrySingleton() {}
public static HungrySingleton getInstance() {
return hs;
}
懒汉式:用时间换空间
/**
* 懒汉式单例模式
* @author mjt
*
*/
public class LazySingleton {
private static LazySingleton ls;
private LazySingleton() {}
public static synchronized LazySingleton getInstance() {
if(ls == null) {
ls = new LazySingleton();
}
return ls;
}
2、工厂模式
定义一个具体的工厂工厂类,负责创建一些类的实例
优点:客户端不需要再负责对象的创建,从而明确各个类的职责
缺点:这个工厂类负责所有对象的创建,如果有新的对象或者某些对象的创建方式不同,就需要不断的修改工厂类,不利于后期维护
/**
* 工厂类
* @author mjt
*
*/
public class ButtonFactory {
public static Button getInstance(String style) {
if("cirle".equals(style)) {
return new CirleButton();
}else if("rect".equals(style)) {
return new RectButton();
}else if("oval".equals(style)) {
return new OvalButton();
}else{
return null;
}
}
}