对于我这种工作一年多点的人,最烦面试,而且是最烦面试的时候问我设计模式,为了找工作,随便弄点应付下吧,虽然重要,但是对于我现阶段来说就是鸡肋
单子模式--------就是不让外部类去new这个类的对象(构造方法私有化),通过别的方法在这个私有化构造方法的类去创建对象返回
分为饿汗式,懒汉式
饿汗式-------上来直接定义private static final Person p=new Person();----------直接创建对象,类只加载一次不存在线程安全问题
懒汉式-------private static Person p; 在别的类想获取这个对象的方法里面写上 if(p==null){p=new Person()} return p;------因为这个资源有可能被大家一起用,
存在线程安全问题,所以这个方法要加上同步关键字
判断是否是同一个实例的时候----------1.==(判断引用类型,时候指向一个对象)2.hashCode()
保证一个jvm中,该对象只有一个实例存在
spring的dispatcher,controller,service都是单例的
工厂模式-------1.简单工厂(生成对象),2.抽象工厂(生成工厂),3.工厂方法(生成工厂)
简单工厂------------封装了对象的创建过程(有些对象的创建,不止是new那么简单,也许会依赖别的对象的去创建)--spring创建对象就是体现
-----------重要的是思想,根据传值的不同,生成不同的对象
场景---------生成不同的球类
实现---------1.创建球类接口,里面有个public void getBallName()方法;
2.写两个类实现球类接口,输出自己球类的信息
3.写个工厂,根据传入的值,生成不同的球类对象
4.写测试类调用工厂方法,之后由于球类再调用时已经new了,直接调用方法
代理模式------作用(拓展没有的功能,自己有的不变)
------场景(spring页面属性直接封装到controller的属性里面,因为真正用的已经不是自己的controller了,而是spring的,在你的功能基础上加了别的功能,
spring的事物也是这个原理--其实是数据库的事物操作)
静态代理----生产电脑---1.定义一个接口卖电脑
2.thinkpad,dell分别实现接口,卖电脑,代理类也实现接口卖电脑,声明了一个接口的变量,变量调用方法,但是在卖电脑的时候多输
出了两句话(开始,结束)
3.测试类传递接口的参数,因为接口不能new,所以用实现他的类当成参数传递
动态代理和静态代理的比较-----------动态代理需要接口,但是可以代理任何东西,静态代理代理的是固定的
单子模式--------就是不让外部类去new这个类的对象(构造方法私有化),通过别的方法在这个私有化构造方法的类去创建对象返回
分为饿汗式,懒汉式
饿汗式-------上来直接定义private static final Person p=new Person();----------直接创建对象,类只加载一次不存在线程安全问题
懒汉式-------private static Person p; 在别的类想获取这个对象的方法里面写上 if(p==null){p=new Person()} return p;------因为这个资源有可能被大家一起用,
存在线程安全问题,所以这个方法要加上同步关键字
判断是否是同一个实例的时候----------1.==(判断引用类型,时候指向一个对象)2.hashCode()
保证一个jvm中,该对象只有一个实例存在
spring的dispatcher,controller,service都是单例的
工厂模式-------1.简单工厂(生成对象),2.抽象工厂(生成工厂),3.工厂方法(生成工厂)
简单工厂------------封装了对象的创建过程(有些对象的创建,不止是new那么简单,也许会依赖别的对象的去创建)--spring创建对象就是体现
-----------重要的是思想,根据传值的不同,生成不同的对象
场景---------生成不同的球类
实现---------1.创建球类接口,里面有个public void getBallName()方法;
2.写两个类实现球类接口,输出自己球类的信息
3.写个工厂,根据传入的值,生成不同的球类对象
4.写测试类调用工厂方法,之后由于球类再调用时已经new了,直接调用方法
代理模式------作用(拓展没有的功能,自己有的不变)
------场景(spring页面属性直接封装到controller的属性里面,因为真正用的已经不是自己的controller了,而是spring的,在你的功能基础上加了别的功能,
spring的事物也是这个原理--其实是数据库的事物操作)
静态代理----生产电脑---1.定义一个接口卖电脑
2.thinkpad,dell分别实现接口,卖电脑,代理类也实现接口卖电脑,声明了一个接口的变量,变量调用方法,但是在卖电脑的时候多输
出了两句话(开始,结束)
3.测试类传递接口的参数,因为接口不能new,所以用实现他的类当成参数传递
动态代理和静态代理的比较-----------动态代理需要接口,但是可以代理任何东西,静态代理代理的是固定的