设计模式之工厂模式

1、设计模式历史

设计模式,是一种开发过程中总结出来的代码设计思想,使用他们可以提高代码的复用性可扩展性可维护性。

设计模式这个术语是上个世纪90年代由Erich Gamma、Richard Helm、Raplh Johnson和Jonhn Vlissides四个人总结提炼出来的,并且写了一本Design Patterns的书。这四人也被称为四人帮(GoF)

所以设计模式也称为GoF23。

GoF将23种设计模式分为:创建型,结构型,行为型。

2、OOP七大原则

  1. 开闭原则:对扩展开放,对修改关闭
  2. 里氏替换原则:如果调用父类的方法可以成功,那么换成子类也可以成功
  3. 接口分离原则:尽量不使用实现类,而是通过接口访问。
  4. 单一职责原则:控制粒度大小,使接口的职责简单,高内聚性。
  5. 依赖倒置原则:为每个类设计需要的专用接口
  6. 迪米特法则:只与直接朋友交流,不与陌生人说话。
  7. 合成复用原则:先考虑组合或聚合的关联关系实现,其次再考虑继承。

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();
    }
}

总结:

​ 简单工厂模式:代码更简单,但是不符合开闭原则。在实际开发中使用多。

​ 工厂方法模式:符合开闭原则,但是代码复杂且多,将会不断增加代码量。实际使用却少。

posted @   阿落小世界  阅读(23)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
点击右上角即可分享
微信分享提示