人永远是要学习的。死的时候,才是毕业的时候。——萧楚女
简单工厂又叫静态工厂方法模式,它定义一个具体的工厂类负责创建一些类的实例.(其实就专门创建对象的).
public class AnimalFactory {
private AnimalFactory(){}
//通过类名 调用即可
public static Dog createDog() {return new Dog();}
public static Cat createCat() {return new Cat();}
//改进
public static Animal createAnimal(String animalName) {
if(“dog”.equals(animalName)) {}
else if(“cat”.equals(animale)) {
}else {
return null;
}
缺点一旦有新的对象需要,就要改代码.
<hr/>
工厂方法模式中抽象工厂类负责定义创建对象的接口,具体对象的创建工作由继承抽象工厂的具体类实现
//把工厂定义成接口
public interface Factory {
public Animal createAnimal();
}
创建具体动物的工厂实现类去创建对象,要什么动物就创建一个对应的工厂类
public class DogFactory implements Factory {
@Override
public Animal createAnimal() {
return new Dog();
}
}
//创建工厂的对象,调用里面的方法即可.
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
DogFactory df = new DogFactory();
Dog d = (Dog) df.createAnimal();
d.eat();
}
}
缺点:很麻烦,多一个动物就搞一个对应的工厂.
适配器模式
//有一个接口是个学校,里面有很多的内容,不是每一个人都需要的
interface College {
public abstract void FindFriend();
public abstract void Study();
public abstract void Fight();
public abstract void Drink();
public abstract void Sleep();
}
//抽象类实现了这些接口.
class Student implements College{
@Override
public void FindFriend() {
}
@Override
public void Study() {
}
@Override
public void Fight() {
}
@Override
public void Drink() {
}
@Override
public void Sleep() {
}
}
//具体的小明同学继承了这个类
class xiaoming extends Student {
//小明同学只需要打架,睡觉,喝酒
//就重写些方法即可,就不需要重写所有的方法了;
@Override
public void Fight() {
System.out.println("打人");
}
@Override
public void Drink() {
System.out.println("喝酒");
}
@Override
public void Sleep() {
System.out.println("睡觉");
}
}