面向对象设计基本原则
1、OCP原则,对修改关闭,对扩展开放。
2、DIP原则,要依赖接口编程,不要依赖于实现。
3、LoD原则,尽量少依赖其他类.
简单工厂模式
//接口
public interface Garden {
void say();
}
public class Makka implements Garden {
@Override
public void say() {
System.out.println("Makka Pakka来了");
}
}
public class Upsy implements Garden {
@Override
public void say() {
System.out.println("Upsy 来了");
}
}
调用者只依赖于接口、工厂,与接口的实现无直接关联。
public class Demo01 {
public static void main(String[] args) {
Garden g1 = GardenFactor.gardenCreate("Makka");
Garden g2 = GardenFactor.gardenCreate("Upsy");
g1.say();
g2.say();
}
}
简单工厂模式不完全满足OCP,扩展要对源码进行修改。
工厂方法模式
多个工厂,与简单工厂模式相比类更多,但是符合OCP,扩展不需要对已有的类进行修改,只需增加新的类。
public interface GardenFactor {
Garden creatGarden();
}
public class MakkaFactor implements GardenFactor {
@Override
public Garden creatGarden() {
return new Makka();
}
}
public class UpsyFactor implements GardenFactor {
@Override
public Garden creatGarden() {
return new Upsy();
}
}