设计模式之工厂模式
1、设计模式历史
设计模式,是一种开发过程中总结出来的代码设计思想,使用他们可以提高代码的复用性,可扩展性和可维护性。
设计模式这个术语是上个世纪90年代由Erich Gamma、Richard Helm、Raplh Johnson和Jonhn Vlissides四个人总结提炼出来的,并且写了一本Design Patterns的书。这四人也被称为四人帮(GoF)
所以设计模式也称为GoF23。
GoF将23种设计模式分为:创建型,结构型,行为型。
2、OOP七大原则
- 开闭原则:对扩展开放,对修改关闭
- 里氏替换原则:如果调用父类的方法可以成功,那么换成子类也可以成功
- 接口分离原则:尽量不使用实现类,而是通过接口访问。
- 单一职责原则:控制粒度大小,使接口的职责简单,高内聚性。
- 依赖倒置原则:为每个类设计需要的专用接口
- 迪米特法则:只与直接朋友交流,不与陌生人说话。
- 合成复用原则:先考虑组合或聚合的关联关系实现,其次再考虑继承。
3、创建型
3.1 工厂模式
简单工厂模式
假设要生产有一些车
public interface car {
void name();
}
public class dazhong implements car{
@Override
public void name() {
System.out.println("大众");
}
}
public class hongQi implements car{
@Override
public void name() {
System.out.println("红旗");
}
}
通过简单工厂模式生产,只需要一个工厂
问题:如果想要增加一个新的五菱汽车,则需要修改原有代码,不符合开闭原则
//简单工厂模式
public class factoryCar {
public car createCar(String name){
if(name.equals("红旗")){
return new hongQi();
}
else if(name.equals("大众")){
return new dazhong();
}else {
return new dazhong();
}
}
}
public class consumer {
public static void main(String[] args) {
car car1 = new factoryCar().createCar("红旗");
car car2 = new factoryCar().createCar("大众");
car1.name();
car2.name();
}
}
工厂方法模式
思路是:每种车子都有一个自己的工厂实现了工厂类
public interface factory {
car create();
}
public class dazhongFactory implements factory{
@Override
public car create() {
return new dazhong();
}
}
public class hongQiFactory implements factory{
@Override
public car create() {
return new hongQi();
}
}
public class consumer {
public static void main(String[] args) {
car car1 = new hongQiFactory().create();
car car2 = new dazhongFactory().create();
car1.name();
car2.name();
}
}
总结:
简单工厂模式:代码更简单,但是不符合开闭原则。在实际开发中使用多。
工厂方法模式:符合开闭原则,但是代码复杂且多,将会不断增加代码量。实际使用却少。

浙公网安备 33010602011771号