1、 封装:
将应用程序共性【确定】的部分,进行封装,非共性的部分封装在各自Class中。封装的方式:
1) 局部封装
A、 功能,使用函数封装;
B、 静态方法或静态属性,可以用类来调用,避免产生不必要的对象。工具类不使用特有数据。
2) 类封装
A、构造一个专门提供方法的方法类,由于没有属性域,对象产生没有意义,为了避免堆内存中出现这种对象:
a. 将构造函数私有化(使不能产生对象);new constructor();
b. 将构造函数静态化,可以用类名直接调用。
B、为不确定的功能,建立接口,提供范式,让子类实现各自的功能。
C、建立抽象类,可以同时规定共同部分,和通过抽象方法规定不确定部分的范式。缺点是,继承只允许一个父类。接口不限。
抽象出共性建立函数。
Public Static void Function(Cat c){System.out.println(“fsfa”);}
Function(new Cat());
多态的优势
Public Static void function(Animal a){System.out.println(“fsfs”);}
Function(new Cat());
Function(new Dog());提高代码复用性,和扩展性。
2、 单例设计模式:(保证对象的唯一性,是操作原子事物化)
先初始化对象,调用函数时初始化对象两中方式。
A、禁止其他程序建立本类对象 【构造函数私有化】
B、在本类中,自定义一个对象
C、对外提供访问方法。
延时加载: 类在加载时没有立即创建对象,调用是才初始化。
3、 装饰设计模式:{解决继承的结构臃肿问题}
为增强某个类的功能,重新定义一个新类,将原类的对象传给该类。
继承方式获得原功能:造成继承体系臃肿
装饰模式: 将原类对象作为参数传给装饰类,并增加处理功能。
仍然需要优化的地方:
增加的新处理方式,怎样做到更高级别的抽象,否则,装饰类仍然要添加新的处理方式。
4、 模板方法设计模式:
解决的问题:当功能内部一部分实现时确定,一部分实现时不确定的。这时可以把不确定的部分暴露出去,让子类去实现。
abstractclass GetTime{
public final void getTime(){ //此功能如果不需要复写,可加final限定
long start = System.currentTimeMillis();
code(); //不确定的功能部分,提取出来,通过抽象方法实现
long end = System.currentTimeMillis();
System.out.println("毫秒是:"+(end-start));
}
public abstract void code(); //抽象不确定的功能,让子类复写实现
}
classSubDemo extends GetTime{
publicvoid code(){ //子类复写功能方法
for(int y=0; y<1000; y++){
System.out.println("y");
}
}
}