工厂,代理,单例模式的理解

    一 简单工厂模式:
        1个接口定义方法,
        2个实现类重写接口方法,
        1个工厂类 定义方法返回类型是接口,但是返回值一般是该接口的实现类,接口是抽象的,不能实例化的,但是接口可以声明一个引用,指向其实现类。
        1个测试类 创建工厂类对象,调用其方法,传type值,用来确认返回值是改接口哪个实现类。得到的返回值是该接口的实现类,调用其方法打印输出语句。
        
       优缺点:这样模块清晰化,每个部分都各司其职,分工明确,代码就实现最渐层意义上的  “可维护”  啦。 说到缺点,当我们需要增加一产品,
              比如在学习一门新技术时,这样个小功能我们就要去添加一个新的类,同时我们需要在Factory中改动到switch 里面的代码,
              这是耦合性很高的表现啦!

    二 工厂模式: 
       一个A接口,定义一个方法规范(),返回类型:B接口。这里A接口相当于工厂的规范条件。
       一个实现类AImpl,重写方法,返回类型B接口,返回值B接口的实现类,连接的是A接口。这里相当于一个分厂
       一个B接口,定义一个方法规范(学习技术),返回类型:void
       一个实现类BImpl,重写方法,要学习的技术,比如python,连接的是B接口
       一个测试类C,创建一个A接口的实现类,调用其方法,返回B接口对应的实现类,调用其方法,打印输出。
    
    优缺点:可以设立多个子工厂,而不是所有的产品有单一的工厂来生产,而是给各自特色的子工厂来生产。
            比如:要增加一门新技术,可以创建一个分厂,就是再创建一个AImpl。但是这样做每增加一门
            技术,相应的也要增加一个子工厂,加大了额外的开发量。

   三 抽象工厂:
              1.一个A接口 定义一个方法,比如关于前端的,
              2.一个AImpl实现类,实现A接口的方法,要学习H5
              3.一个B接口 定义一个方法,比如关于后端的,
              4.一个BImpl实现类,实现B接口的方法,要学习Java
              5.一个抽象类(工厂) 定义两个抽象方法,返回类型是A接口,B接口
              6.一个抽象类的子类(子工厂) 重写父类的两个方法,返回值是A接口实现类,B接口实现类
              7.一个测试类,创建一个子工厂对象,调用两个方法可以得到两个不同接口的实现类对象,调用其方法,打印输出。
      
    
    
       抽象工厂优缺点:可以创建分工厂来增加已知种类的新技术,大大降低了耦合性,但是但出现一种不是已知种类的新种类时
                     就需要创建一个新的接口,就需要改变其工厂类的方法,影响到所有子工厂,必须重写父类的抽象方法
         
    四  代理模式:代理类与委托类有同样的接口,代理类主要负责处理信息,过滤信息,处理业务调用的还是委托类的方法,测试的时 候是创建代理类的对象执行其方法。
    优缺点:代理对象必须提前写出,如果接口发生了变化,代理对象的代码也要进行维护。


    五  单例模式
        懒汉:1 私有的构造函数,只限本类使用,
                   private 类名(){} 
                 2 本类的私有的静态的属性(伴随着类的加载而加载,且只加载一次)
                   private static 类名 类对象名 = null;
                 3 提供一个对象可以访问该类公共的静态的方法
                   public static 类名 方法名(){
                        if(类对象名==null){类对象名 = new 类名();}
             		return 类对象名;
                     }
           恶汉:1 private 类名(){} 
        	 2 private static 类名 类对象名 = new 类名();
         	 3 public static 类名 方法名(){ return 类对象名; }
           
          
              懒汉和饿汉的区别
              1,类加载速度  懒汉快,饿汉慢  懒汉加载时不用初始化对象
              2,运行时获取对象的速度   懒汉慢,饿汉快  懒汉调用方法时才实例化对象
              3,占用资源情况  懒汉调用获取实例方式才加载对象,饿汉是该类被实例化时一直占用资源
             

        懒汉存在线程不安全的问题,当多个线程同时调用这个方法时,实例化对象就会发生混乱。
         以上便是个人的一点理解,如有错误,请及时纠正,不胜感激!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值