图解如下:(代码在最后)
我们先看看具体结构:
代码来了~
package com.Design1.AbFactory.Impl;
public interface Animal {
public void eat();
public void sleep();
}
package com.Design1.AbFactory.Impl;
public interface Size {
public void big();
public void mix();
}
package com.Design1.AbFactory.Animal;
import com.Design1.Factory.Animal;
public class Dog implements Animal {
@Override
public void eat() {
System.out.println("我是DOG------我会吃");
}
@Override
public void sleep() {
System.out.println("我是DOG------我会睡觉");
}
}
package com.Design1.AbFactory;
import com.Design1.AbFactory.Abstruct.AbAnimal;
import com.Design1.AbFactory.Abstruct.AbSize;
import com.Design1.AbFactory.Impl.Size;
import com.Design1.Factory.Animal;
public class AbFactoryDemo {
public static void main(String[] args) {
AbAnimal abAnimal = new AbAnimal();
AbSize abSize = new AbSize();
Animal animal = abAnimal.getAnimal("dog");
Size size = abSize.getSize("big");
animal.eat();
size.big();
}
}
package com.Design1.AbFactory.Abstruct;
import com.Design1.AbFactory.Impl.Size;
import com.Design1.Factory.Animal;
public abstract class AbFoctory {
public abstract Animal getAnimal(String animal);
public abstract Size getSize(String size);
}
package com.Design1.AbFactory.Abstruct;
import com.Design1.AbFactory.Impl.Size;
import com.Design1.Factory.Animal;
import com.Design1.Factory.Dog;
public class AbAnimal extends AbFoctory {
@Override
public Animal getAnimal(String animal) {
if(animal.equals("dog")){
return new Dog();
}
return null;
}
@Override
public Size getSize(String size) {
return null;
}
}
package com.Design1.AbFactory.Abstruct;
import com.Design1.AbFactory.Impl.Size;
import com.Design1.AbFactory.Size.DogSize;
import com.Design1.Factory.Animal;
public class AbSize extends AbFoctory {
@Override
public Animal getAnimal(String animal) {
return null;
}
@Override
public Size getSize(String size) {
if(size.equals("big")){
return new DogSize();
}
return null;
}
}
最后DEMO:
package com.Design1.AbFactory;
import com.Design1.AbFactory.Abstruct.AbAnimal;
import com.Design1.AbFactory.Abstruct.AbSize;
import com.Design1.AbFactory.Impl.Size;
import com.Design1.Factory.Animal;
public class AbFactoryDemo {
public static void main(String[] args) {
AbAnimal abAnimal = new AbAnimal();
AbSize abSize = new AbSize();
Animal animal = abAnimal.getAnimal("dog");
Size size = abSize.getSize("big");
animal.eat();
size.big();
}
}
运行结果:
我是Dog----我会吃
大