1、设计模式
面向对象的设计原则:开闭原则(对修改关闭,对扩展开发)
1、单例
概述:内存中只能存在一个该类的对象
饿汉式:对象的初始化过程在类加载的时候就已经完成
懒汉式:调用方法的时候再创建对象,需要注意线程安全问题
开发中建议使用饿汉式,面试两种都要说明
/**
* 饿汉式:对象的初始化过程在类加载的时候就已经完成
* 在开发中建议使用
* @author hao
*
*/
public classConfiguration {
private staticConfiguration conf = new Configuration();
public staticConfiguration getInstance(){
return conf;
}
privateConfiguration(){
}
}
/**
* 懒汉式:调用方法的时候再创建使用
* 在面试中建议使用
* @author hao
*
*/
public classConfiguration {
private staticConfiguration conf = null;
public static synchronizedConfiguration getInstance(){
if(conf ==null){
conf = newConfiguration();
}
return conf;
}
privateConfiguration(){
}
}
2、工厂模式
概述
创建对象的事情,可能比较复杂的,所以创建对象的这个逻辑我们应该定义到专门的一个类里面,这个类专门负责创建各种对象实例,那么这个类就被称为工厂类
简单工厂和工厂模式的区别
简单工厂:一个工厂可以创建多个对象,如果要添加对象,那应该修改工厂
工厂模式:一个工厂对应一个对象,换句话说 一个工厂只能创建一个对象,如果我要创建这个对象,第一步应该先创建工厂对象,然后通过工厂对象来创建对象。如果要添加对象,只需要再新增一个工厂即可,更符合开闭原则
比如说,我们现在有很多动物类,猫,狗,猪 …
而这些动物有相同的行为, eat()。
抽取一个共同的父类。动物。
简单工厂模式:
Animal
|--Dog
|--Cat
AnimalFactory
public static Animal createAnimal(String type){
if("dog".equals(type)){
return new Dog();
}else if("cat".equals(type)){
return new Cat();
}else {
return null;
}
}
工厂方法模式:
Animal
|--Dog
|--Cat
|--Pig
AnimalFactory
|--DogFactory
|--CatFactory
|--PigFactory
3、包装设计模式
概述
对一个已知类,类的原始行为要保留住而且对于某一个方法或者给类增加一些新的内容,这种情况下使用包装设计模式
编写步骤
1、编写一个类,实现与被包装类相同的接口 或者 继承被包装类
2、定义一个引用(变量名),需要记住被包装对象的引用
3、定义构造方法,传入被包装类的对象实例
4、改写需要增强的方法
5、对于不需要增强的方法,调用原有对象的方法
以下代码是个包装类,包装BufferedReader,增加打印行的功能
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class MyBufferedReader extends BufferedReader{
private BufferedReader br ;
private int number= 1;
public MyBufferedReader(BufferedReader br){
super(br);
this.br = br;
}
public String readLine() throws IOException{
if(br.readLine() == null)
return null;
return number+++br.readLine();
}
public static void main(String[] args) throws Exception {
MyBufferedReader reader = new MyBufferedReader(new BufferedReader(new FileReader("d://giftsstore.log")));
String line = null;
while((line=reader.readLine()) != null){
System.out.println(line);
}
}
}
4、模板设计模式
概述:
模版设计模式中,将工作的主体架构规定好,具体类可以根据自己的需要,各自去实现
模板类最好是一个抽象类,里面包含抽象方法和非抽象方法