设计模式初析

设计模式的概念:

一套被反复使用,多数人知晓的,经过分类编目的,代码设计经验的总结
简述为:特定问题的固定解决方法。

好处:

使代码可以重用,让让代码更容易被他人理解,保证代码可靠性,重用性。
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 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值