还是太简单了,上代码
/**
* 工厂方法
*/
public class Main {
public static void main(String[] args) {
IAnimalFactory blackAnimalFactory = new BlackAnimalFactory();
ICat blackCat = blackAnimalFactory.createCat();
blackCat.eat();
IAnimalFactory whiteAnimalFactory = new WhiteAnimalFactory();
ICat whiteCat = whiteAnimalFactory.createCat();
whiteCat.eat();
}
}
public interface IAnimalFactory {
ICat createCat();
}
public class BlackAnimalFactory implements IAnimalFactory {
@Override
public ICat createCat() {
return new BlackCat();
}
}
public class WhiteAnimalFactory implements IAnimalFactory {
@Override
public ICat createCat() {
return new WhiteCat();
}
}
public interface ICat {
void eat();
}
public class BlackCat implements ICat {
public void eat() {
System.out.println("The black cat is eating!");
}
}
public class WhiteCat implements ICat {
public void eat() {
System.out.println("The white cat is eating!");
}
}
问题:
简单工厂如果增加了一个产品,是需要改工厂代码的,就是改那个条件判断。
用法:
工厂方法增加一个产品,就增加一个工厂生产这个产品,不改原来的代码,这个技巧在现实中经常用到,用多态降低代码的耦合度。
在设计模式中,这是一个非常重要的概念,用类的增加去解决代码的耦合性问题,那有没有又不改原代码又不增加类的方法呢,想太多!!!