接着上集。。。。
这简单工厂老浣熊玩的妥妥儿的,享受着园长和厂长的双重快乐~~。
直到这一天的到来:
一群水灵灵的小学生来春游,转了没多久就有些失望了,跑到老浣熊跟前问道:"老浣熊爷爷,为什么动物园没有熊猫 长颈鹿 猴子 大象......(此处略过上百种动物),我们想看熊猫 长颈鹿 猴子 大象......(此处又略过上百种动物)。"
老浣熊眉头一紧:"这群熊孩子,喊谁爷爷呢!我比你们爸爸还小呢!叫哥哥!"
"好的,老浣熊爷爷,老浣熊爷爷你这么厉害能再变出来这些动物吗?"
看着这些水嫩的大眼睛,"好吧,哥哥这就给你们造出来!先来个猴子吧!"
public class Monkey implements Animal {
@Override
public void sayYourName() {
System.out.println("I am monkey");
}
}
猴子的定义有了,接下来就是定义工厂啦。
public class AnimalFactory {
public static Animal createAnimal(String animalType) {
Animal animal = null;
switch (animalType) {
case "dog":
animal = new Dog();
break;
case "cat":
animal = new Cat();
break;
case "raccoon":
animal = new Raccoon();
break;
case "monkey":
animal = new Monkey();
break;
}
return animal;
}
}
工厂也有啦!接下来就让工厂自己给这群小猴子造猴子去吧!
正当老浣熊得意洋洋准备拂袖而去,小猴子们,啊不,是小学生们涌了上来:老浣熊爷爷,我的熊猫 长颈鹿 大象......(此处继续略过上百种动物)
老浣熊眉头已锁死,第一次察觉到,小孩子是比女人更可怕的存在但也只能硬着头皮干了。。。
在数以秒记的时间里,他疯狂地给代码加case条件,偶尔再给动物加点属性,看起来还是有条不紊。
没一会儿,已经做了一半了了。突然有个小学生跑来拉着老浣熊的袖口:爷爷爷爷,我要的"河马",但是给我的是狗狗,呜呜呜呜.....老浣熊定眼一看,哟,加逻辑的时候不小心改错了其他逻辑了。这可怎么办呐?这要坏我百年好浣熊的名声!
那有没有一种办法,既可以保留简单工厂的特点,把new的实现交给factory,又可以在新增一种神兽的时候不会涉及原有逻辑的改动呢???已经入土的代码最好就不要去动了好伐!
禅定七七四十九秒后,老浣熊聪明的脑袋瓜蹦出了个想法:// 定义一个神兽工厂,各种具体的神兽去实现它
public interface AnimalFactory {
public Animal createAnimal();
}
--------------------------------------------------------------------
public class DogFactory implements AnimalFactory {
@Override
public Animal createAnimal() {
return new Dog();
}
}
--------------------------------------------------------------------
public class CatFactory implements AnimalFactory {
@Override
public Animal createAnimal() {
return new Cat();
}
}
--------------------------------------------------------------------
// 在想要实例化某种神兽d额时候,通过子类去实例化
public static void main(String[] args) {
AnimalFactory factory = new CatFactory();
factory.createAnimal().sayYourName();
AnimalFactory factory2 = new DogFactory();
factory2.createAnimal().sayYourName();
}
"不得不说,老夫的智慧真是令人发指啊!这谁能想得到?再多个草泥马,就加个AnimalFactory的子类实现,想要生产的时候new 草泥马的工厂,完美。隔壁王婶儿再也不用担心我动到原来的代码,影响他儿子看河马了"
随着普通工厂的建立,似乎神兽们的批量召唤变的更加的简单了
但随着神兽的种类和数量的增多以及游客数量的增多,老浣熊感觉到年过三十的体力不支、记忆减退导致接待和管理上的力不从心
所以,他决定,再做些调整
欢迎关注公众号:Java面霸君