zoukankan      html  css  js  c++  java
  • 简单设计模式整理

    单例模式

    单例对象(Singleton)是一种常用的设计模式。在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在。这样的模式有几个好处:
    1、某些类创建比较频繁,对于一些大型的对象,这是一笔很大的系统开销。
    2、省去了new操作符,降低了系统内存的使用频率,减轻GC压力。
    3、有些类如交易所的核心交易引擎,控制着交易流程,如果该类可以创建多个的话,系统完全乱了。(比如一个军队出现了多个司令员同时指挥,肯定会乱成一团),所以只有使用单例模式,才能保证核心交易服务器独立控制整个流程。

    单线程懒汉版本:

    package designpattern;
    
    public class Singleton {
        private static Singleton instance=null;
        
        private Singleton(){        
        }
        
        public static  Singleton getInstance(){
            if(instance==null){
                instance = new Singleton();
            }
            return instance;
        }
        
    }

    饿汉版:

    package designpattern;
    
    public class Singleton {
        private static Singleton instance=new Singleton();
        
        private Singleton(){        
        }
        
        public static  Singleton getInstance(){
            return instance;
        }
        
    }

    利用内部类实现多线程懒汉版 (单例模式使用内部类来维护单例的实现,JVM内部的机制能够保证当一个类被加载的时候,这个类的加载过程是线程互斥的。

    package designpattern;
    
    public class Singleton {
        
        private Singleton(){        
        }
        
        private static class SingletonFactory{
            private static Singleton instance = new Singleton();
        }
        
        public static  Singleton getInstance(){
            return SingletonFactory.instance;
        }
        
    }

    策略模式

    策略模式定义了一系列算法,并将每个算法封装起来,使他们可以相互替换,且算法的变化不会影响到使用算法的客户。

    模板方法模式

    模板方法模式——在一个抽象类中定义一个操作中的算法骨架,而将一些步骤延迟到子类中去实现。模板方法使得子类可以不改变一个算法的结构前提下,重新定义算法的某些特定步骤,模板方法模式把不变行为搬到超类中,从而去除了子类中的重复代码。

    代理模式

    代理模式英文名Proxy Pattern,是23种常用设计模式之一,它的功能是为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。

    装饰者模式

    动态地给一个对象添加一些额外的职责或者行为。就增加功能来说, Decorator模式相比生成子类更为灵活。
    装饰器模式的应用场景:
      1、需要扩展一个类的功能。
      2、动态的为一个对象增加功能,而且还能动态撤销。(继承不能做到这一点,继承的功能是静态的,不能动态增删。)
    缺点:产生过多相似的对象,不易排错!

    观察者模式

    观察者模式:定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主体对象,这个主题对象在状态发生变化时,会通知所有观察者。当一个对象改变需要同时改变其他对象,而且他不知道具体有多少对象需要改变的时候,考虑使用观察者模式。

     工厂相关:

    以前整理过:http://249326109.iteye.com/admin/blogs/2025966

    参考:

    http://blog.csdn.net/u010850027/article/category/2135695/2

    http://zz563143188.iteye.com/blog/1847029

  • 相关阅读:
    C++程序代写实现HashSet class
    EL表达式
    Hibernate的事务管理
    ThreadLocal理解
    SOA框架
    JVM垃圾回收机制
    Htpp通讯协议详解
    Android模拟器使用SD卡
    android 开发-HttpClient状态码定义
    android 开发-文件存储之读写sdcard
  • 原文地址:https://www.cnblogs.com/jdflyfly/p/3877542.html
Copyright © 2011-2022 走看看