创建型设计模式及之间的关系:
- 定义: 主要用途是控制对象的创建,包括工厂方法(FactoryMethod),抽象工厂(AbstractFactory),建造者(Builder),原型(Prototype),单例(Singleton)这五种。
- 工厂方法与抽象工厂,建造者,原型的关系:工厂方法与抽象工厂,建造者,原型这三个设计模式关系紧密,通常程序员会以工厂方法作为对象创建的工厂类,然后根据需求的不断变更,调整工厂方法为抽象工厂,建造者,原型这三种。
- 四种设计模式场景:工厂方法主要简单用于针对简单的参数,去创建不同的对象;而抽象工厂用于创建一个对象族;建造者则侧重于创建一个属性复杂的对象;原型则侧重于拷贝原对象;静态工厂侧重于简单生成一个对象;五者各有其使用场景。
- 单例:单例模式是最特殊的创建型设计模式,因为不涉及批量生成对象,只创建一个对象。保证这个类只有一个对象,并提供一个全局访问点。
工厂方法(FactoryMethod):
- 这是最简单的设计模式,写一个类,里面一个方法,方法可以接收一个消息,方法根据消息选择返回怎样的对象,可能延迟到子类去产生,当然返回类型基于多态。
- Spring的IOC容器使用的getBean("")就是在使用工厂方法。
抽象工厂(AbstractFactory):
- 这也是一个挺常用的设计模式。定义一个抽象工厂类,多个实体工厂类再对抽象工厂类进行实现。对产品族就行管理,产生的对象永远是根据不同的工厂类产生的,用到了两个多态,一个是工厂的多态,一个是产品的多态。有明显的封装变化的思想。
- Spring支持声明抽象工厂时。
建造者(Builder):
- 最常见的设计模式。定义一个接口,可以配置大量复杂属性,通过链型编程或xml配置。
- 爬虫框架okhttp的链式编程。
- mybatis的SessionFactoryBuilder使用xml配置进行的对象生成。
原型(Prototype):
- java语言自带的设计模式。clone()方法返回的是该对象的拷贝。
- Spring的bean声明中scope的prototype。
单例(Singleton):
- 保证只有一个对象,提供一个全局访问点。
- Spring的bean声明中scope的默认值或singleton声明。
最后:
希望可以多多指点一下,毕竟就是一个连java实习生岗位3k薪水都找不到的大四生。