设计模式

对于我这种工作一年多点的人,最烦面试,而且是最烦面试的时候问我设计模式,为了找工作,随便弄点应付下吧,虽然重要,但是对于我现阶段来说就是鸡肋

      单子模式--------就是不让外部类去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,所以用实现他的类当成参数传递

                                                                          

                           动态代理和静态代理的比较-----------动态代理需要接口,但是可以代理任何东西,静态代理代理的是固定的






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值