在看Java 设计模式,断断续续看了有一段时间了。为了记录,也为了在书写中梳理一下自己的理解,写下这篇文章。
2019-02-12
1、什么是设计模式 & 为什么要学设计模式
设计模式是一种经过验证的、对某种问题的针对性解决方案。设计模式是一种解决问题的思路,这种思路经过多人在长时间的验证,并被多数人认可。
应当说,设计模式是编程的术语,只有明白设计模式才能更好的理解各种源码,否则免不了隔雾观花,不能正确地明白妙处。
对Java来说,设计模式利用了Java的特性。所以,写这篇文章,对理解Java本身也有帮助。
2、常见的设计模式
2.1:创建性质,根本目的是搞出一个对象出来。
首先,要明确,到底要创建一个怎样的对象。假如对象明确,不需要替换,我觉得就不用使用设计模式了。简单 new 一下就好。
工厂模式:使用该设计模式的原因是,需要一批对象(需要某一个,但是范围比较大)。这些对象可以归类为某一个抽象类,或者某个接口的派生类。这种情况下,适用工厂模式。
工厂模式的核心是:外界传来一个参数,工厂返回这个参数代表的对象。需要根据参数,确定对象,这就需要一个映射关系。可以搞一个xml文件,存放这个映射关系;或者存到数据库中;再或者,直接利用反射:即,利用Java本身的性质,用把类的包与名传过来,直接利用反射创建对象(不推荐)。
工厂模式有些繁琐,即:根据参数找工厂,工厂再new对象,或者使用其它的方式创建对象。好处是,将职责有效区分,找 & 创建;并且在创建的步骤可以使用建造者模式来创建复杂的对象。坏处是:太繁琐了。
抽象工厂模式与工厂模式一般,是用来解决创建对象的问题。
不过,这次需要的对象不是一个,而是对象集合。
设想:
创建一个新对象,这个对象引用需要的对象,然后按照一般工厂模式进行;
让工厂不止拥有一个创建对象的方法,可以拥有多个创建对象的方法,可以将需要的对象都包含进来。
单例模式
单例模式也是创造对象的模式。适用场景为:仅需要一个对象,若有多个对象可能会造成错误或者创建对象的开销特别大。
特点:构造函数必须私有,否则可能或被直接new出来。提供一个创建对象的方法,维持一个静态的自身引用,在使用这个方法前,先判断静态引用是否为空,如果为空,那么就直接返回这个静态对象,否则创建一个新对象,并将这个对象赋给静态引用,仍然返回这个静态引用。
网友评论