一、抽象类应用——模板方法设计模式
1、概念
定义一个操作中的算法的骨架,而将一些可变部分的实现延迟到子类中。模板方法模式使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定的步骤。
2、实现
//模板方法设计模式
public class Test01 {
public static void main(String[] args){
ManagerInput mi=new ManagerInput();
mi.action("admin","add");
}
}
//用抽象类实现固定的操作
abstract class Input{
public void action(String name,String option ){
if("admin".equals(name)){
execute(option);
}else{
System.out.println("您没有操作权限!");
}
}
public abstract void execute(String opotion);
}
//用子类实现变化的操作
class ManagerInput extends Input{
public void execute(String opotion){
if("add".equals(opotion)){
System.out.println("实现添加操作");
}else if("delete".equals(opotion)){
System.out.println("实现删除操作");
}
}
}
class UserInput extends Input{
public void execute(String opotion){
if("find".equals(opotion)){
System.out.println("实现查询操作");
}
}
}
二、接口应用——策略模式
1、概念
定义了一系列的算法,将每一种算法封装起来并可以相互替换使用,策略模式让算法独立于使用它的客户而独立变化。
2、实现
//接口应用——策略模式
public class Test01 {
public static void main(String[] args) {
// TODO Auto-generated method stub
BaseService bs=new UserService();
bs.setISave(new FileSave());
bs.add("user");
}
}
interface ISave{
public void save(String data);
}
class FileSave implements ISave{
public void save(String data){
System.out.println("把数据保存到文件中!");
}
}
class NetSave implements ISave{
public void save(String data){
System.out.println("把数据保存到网络中!");
}
}
class BaseService{
private ISave is;
public void setISave(ISave is){
this.is=is;
}
public void add(String data){
is.save(data);
System.out.println("数据保存完毕!");
}
}
class UserService extends BaseService{
}
3、OO设计原则
面向接口编程
封装变化
多用组合,少用继承
三、object类
1、概念
Object类是类层次结构的根类,每个类都使用object类作为超类,所有对象(包括数组)都实现这个类的方法,所有类都是Object类的子类。
2、toString()方法
返回该对象的字符串表示,建议所有子类都重写此方法。
若不重写,则返回JDK默认toString方法,内容不易看懂。
public String toString(){}
3、equals()方法
比较两个对象是否相等,比较的是内存地址。若需要比较值,则可以重写equals方法。
equals方法具有自反性、对称性、传递性、一致性、
public boolean equals(Object obj){}
4、finalize()方法
当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。子类重写finalize方法,以配置系统资源或执行其他清除。
protected void finalize()throws Throwable
5、 getClass()方法
返回此Object的运行时类