zoukankan      html  css  js  c++  java
  • 10、设计模式

    一、单例设计模式

    懒汉(线程安全问题)同步锁,每次判断锁,效率低,外层再加一个判断是否为空,效率高
         1、私有化构造方法
         2、声明引用类型变量,不要创建对象
         3、声明静态方法获取本类对象,判断是否已经创建了本类的对象,如果已经创建了直接返回,没有则创建引用类型变量返回
     

    二、装饰者设计模式

    增强一个类的功能,还可以让这些类互相装饰
    通过继承增强一个类的功能:
    优点:代码结构清晰易懂
    缺点:使用不灵活,会导致继承的体系过于庞大
     

    步骤:

    1、在装饰类内部维护一个被装饰类的引用
    2、让装饰类有共同的父类或者父接口
     
    父类有无参的构造方法时默认调用,要是没有无参的构造方法则需要指定有参构造方法
    修饰模式实战增强类:
         优点:内部可以通过多态对多个需要增强的类进行增强,让这些修饰类达到互相装饰的效果,使用灵活
         缺点:需要内部通过多态维护需要被增强类的实力,使代码复杂
     
     

    三、观察者设计模式

    当一个对象发生指定动作时,通知另外一个对象做出相应的处理
    发布 - 订阅、模型 -视图、源-收听者、从属者
    将观察者和被观察的对象分离开、一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知。
    通常被用来实作事件处理系统,Swing大量使用观察者模式,许多 GUI框架也是如此
    int random = new Random().nextInt(1000);  // 产生范围内的随机数
     

    步骤:

         1、当目前对象发生指定动作时,要通知另外的对象做相应的处理,把对方的相应处理方法定义在接口上
         2、在当前对象中维护接口的引用,当当前对象发生指定动作时即可调用指定的方法
     
     

    四、工厂设计模式

    用于生产对象
    该模式将创建对象的过程放在了一个静态方法中来实现 . 在实际编程中 ,如果需要大量的创建对象 , 该模式是比较理想的 .
    可以用反射产生任意类型的对象
     
     
     
     
    有志者,事竟成,破釜沉舟,百二秦关终属楚;苦心人,天不负,卧薪尝胆,三千越甲可吞吴。
  • 相关阅读:
    BSGS算法(大步小步算法)
    UVA-11426【GCD
    UVA-1637【Double Patience】(概率dp)
    UVA-11174【Stand in a Line】
    About
    51nod 1355 斐波那契的最小公倍数
    CodeForces
    CodeForces
    CodeForces
    CodeForces 901C Bipartite Segments
  • 原文地址:https://www.cnblogs.com/1989guojie/p/6123830.html
Copyright © 2011-2022 走看看