设计模式的概念:
一套被反复使用,多数人知晓的,经过分类编目的,代码设计经验的总结
简述为:特定问题的固定解决方法。
好处:
使代码可以重用,让让代码更容易被他人理解,保证代码可靠性,重用性。
23种设计模式。。。
工厂设计模式
开闭原则: 应该对内修改关闭,对外扩展开放
工厂中获得需要的产品,通过调用静态方法。
结合反射+工厂模式。符合开闭原则。
//type.properties
1=com.qf.Dog
2=com.qf.Pig
自己加猪狗类。
/**
* @author Mr.Gao
* @version 1.0
* @date 2021/4/13 15:48
*/
public class Factory {
public static Object getObject(Class<?> aClass) throws IllegalAccessException, InstantiationException {
return aClass.newInstance();
}
}
public class Test {
public static void main(String[] args) throws IOException, ClassNotFoundException, InstantiationException, IllegalAccessException {
Properties properties = new Properties();
properties.load(new FileInputStream("type.properties"));
String className = properties.getProperty("1");
Class<?> aClass = Class.forName(className);
Object obj=Factory.getObject(aClass);
System.out.println(obj);
}
}
单例模式 ------减少开辟空间的,节省资源
应用场景:并发用户访问web资源时,某些对象设置成单例。
每次获取的对象都是同一个对象。
饿汉式: 静态属性直接实例化对象。 天生线程安全,只有一份
上来就实例化个对象。
实现思路:构造方法私有化+静态方法获取静态对象。
class MySingle{
private static MySingle mySingle=new MySingle();
MySingle(){
}
public static MySingle getInstance() {
return mySingle;
}
}
public class Test {
public static void main(String[] args) throws IOException, ClassNotFoundException, InstantiationException, IllegalAccessException {
MySingle mySingle=MySingle.getInstance();
System.out.println(mySingle);
}
}
懒汉式: 静态属性不直接实例化对象,而是调方法判断后再实例化。
判断是否是空,再拿出唯一对象。多线程时,线程不安全,解决方法:
synchronized 加锁
class MySingle{
private static MySingle mySingle ;
MySingle(){}
//synchronized 加锁解决多线程单例隐患问题
public static synchronized MySingle getInstance() {
if (mySingle==null){
mySingle=new MySingle();
}
return mySingle;
}
}
public class Test {
public static void main(String[] args) throws IOException, ClassNotFoundException, InstantiationException, IllegalAccessException {
MySingle mySingle=MySingle.getInstance();
System.out.println(mySingle);
}
}
枚举: 如果类中状态值过多时,用枚举。简化,不易出错。
概念:规定了取值范围的引用数据类型。用enum关键字。常量为静态常量。
public static final