GOF二十三种设计模式之工厂模式

先说一下面向对象设计的基本原则:

OCP:开放原则,一个软件的实体应当对扩展开放,对修改关闭。

DIP:依赖倒转原则,针对接口编程,不要针对实现编程。

LoD:迪米特法则,只与直接相关的类通信,避免和陌生人通信。

在平常的编程中,我们都是直接new一个对象,而在工厂模式中,将对象的创建统一进行管理和控制,将调用者与实现类进行解耦。

下边是一个简单的示例代码:

public interface Car {
    void run();
}

public class Andi implements Car {

    @Override
    public void run() {
        System.out.println("andi在跑");
    }

}

public class Byd implements Car{

    @Override
    public void run() {
        System.out.println("byd在跑");
    }

}

public class CarFactory{
    //写法1
    public static Car getCar(String type){
        if("andi".equals(type)){
            return new Andi();
        }else if("byd".equals(type)){
            return new Byd();
        }
        return null;
    }
    
    //写法2
    public static Cat getAndi(){
        return new Andi();
    }
    
    public static Car getByd(){
        return new Byd();
    }
}

以上简单工厂模式的实现,第二种是工厂方法模式的实现:

public interface CarFactory {
    Car createCar();
}

public class AndiFactory implements CarFactory{

    @Override
    public Car createCar() {
        return new Andi();
    }

}

public class BydFactory implements CarFactory{

    @Override
    public Car createCar() {
        return new Byd();
    }

}

如果新增加一个Benc类的话:如下:
public class BencFactory implements CarFactory{

    @Override
    public Car createCar() {
        return new Benc();
    }

}

测试如下:
    public static void main(String[] args) {
        Car c1 = new AndiFactory().createCar();
        Car c2 = new BydFactory().createCar();
        
        c1.run();
        c2.run();
    }

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

笑说设计模式-小白逃课被点名

关于我简介工厂模式(FactoryPattern)是最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,而是通过使用一个共同的接口来指向新创建的对象。分类工厂模式可以分为三种,其中简单工厂一般不被认为是一种设计模式,可以将其看成是工厂方法的一种特殊

设计模式面试

设计模式面试1.单例设计模式使用设计模式为了代码复用,增加可维护性。设计模式的六大原则:开闭原则、里氏代换原则、依赖倒转原则、接口隔离原则、迪米特法则(最少知道原则)、合成/聚合复用原则Singleton(创建):保证一个类仅

一句话总结java七大设计原则

开闭原则:对扩展开放,对修改关闭。依赖倒置原则:高层应该不依赖地层。单一职责原则:一个类只干一件事儿。接口隔离原则:一个接口只干一件事儿迪米特法则:不该知道的就不要知道。里氏替换原则:子类重写方法功能发生改变,但是不影响父类方法的语义。合成复用原则:尽量使用组合实现代码复用,不要用继承,要解耦。

Java设计模式之三种工厂模式

工厂模式实现了创建者和调用者的分离,实现了更好的解耦。详细分类:1)简单工厂模式(静态工厂模式);2)工厂方法模式;3)抽象工厂模式面向对象设计的基本原则:1)      OCP(开闭原则,OpenClosedPrinciple):一个软件的实体应当对扩展开放,对修改关闭。2)