1 面向接口编程的思想:如果你是什么什么,那么你就必须能怎么样怎么样。例如:如果你是人,你就必须能吃放。
2 接口多用于制定规则,规定了一个事物必须怎么怎么样。
3 业务方法参数定义使用接口定义,然后依照业务注入不同的实现类。
4 什么是面向接口?关键“面向接口”的主语是什么,就是是什么面向接口?答案是业务方法的参数面向接口,就是在考虑业务方法传递参数的时候最好传递用于定义规则的接口。(以上属于个人理解)
简单Demo
package com.interfaces;
public interface IAnimal {
/**
* 吃
*/
public void eat();
/**
* 所有动物的结局
*/
public String end ="dead";
/**
* 返回年龄
* @return
*/
public int getAge();
/**
* 遗传
* @return
*/
public Object giveBirth();
}
/**
*
*/
package com.interfaces.impl;
import com.interfaces.IAnimal;
import com.utils.T;
/**
* @author Administrator
*
*/
public class Dog implements IAnimal {
private String name;
private String ownerName ;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getOwnerName() {
return ownerName;
}
public void setOwnerName(String ownerName) {
this.ownerName = ownerName;
}
/* (non-Javadoc)
* @see com.interfaces.IAnimal#eat()
*/
@Override
public void eat() {
T.out("我是小狗 我喜欢吃骨头");
}
/* (non-Javadoc)
* @see com.interfaces.IAnimal#getAge()
*/
@Override
public int getAge() {
T.out("我的结局是:"+this.end);
return 3;
}
/* (non-Javadoc)
* @see com.interfaces.IAnimal#giveBirth()
*/
@Override
public Object giveBirth() {
Dog dog = new Dog();
dog.setName("tom狗");
dog.setOwnerName("王伯伯");
return dog;
}
}
/**
*
*/
package com.interfaces.impl;
import com.interfaces.IAnimal;
import com.utils.T;
/**
* @author Administrator
*
*/
public class Cat implements IAnimal {
private String name;
private String kind;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getKind() {
return kind;
}
public void setKind(String kind) {
this.kind = kind;
}
/**
*
*/
public Cat() {
// TODO Auto-generated constructor stub
}
/* (non-Javadoc)
* @see com.interfaces.IAnimal#eat()
*/
@Override
public void eat() {
T.out("我是小猫 我喜欢吃鱼");
}
/* (non-Javadoc)
* @see com.interfaces.IAnimal#getAge()
*/
@Override
public int getAge() {
T.out("我的结局是:"+this.end);
return 0;
}
/* (non-Javadoc)
* @see com.interfaces.IAnimal#giveBirth()
*/
@Override
public Object giveBirth() {
Cat cat = new Cat();
cat.setName("jim小猫");
cat.setKind("吉利");
return cat;
}
}
package com.test;
import com.interfaces.IAnimal;
import com.interfaces.impl.Cat;
import com.interfaces.impl.Dog;
public class Person {
/**
* 业务方法:人类观察动物
* @param obj
* @return
*/
public Object LookAtAniaml(IAnimal obj){
obj.eat();
obj.getAge();
return obj.giveBirth();
}
/**
* @param args
*/
public static void main(String[] args) {
//人类观察狗的流程
Person p1 = new Person();
p1.LookAtAniaml(new Dog());
//人类观察猫的流程
Person p2 = new Person();
p2.LookAtAniaml(new Cat());
}
}
输出结果:
我是小狗 我喜欢吃骨头
我的结局是:dead
我是小猫 我喜欢吃鱼
我的结局是:dead