乐于分享
好东西不私藏

软件设计5 种创建型设计模式精讲(含案例 + 完整代码 + 超全总结)

软件设计5 种创建型设计模式精讲(含案例 + 完整代码 + 超全总结)

点击上方蓝字关注我们

收录于系列文章《软件设计师备考》第二十四篇
工厂方法模式

    定义:定义一个用于创建对象的接口,但让子类决定实例化哪一个类。工厂方法将对象的实例化延迟到子类中完成。

    生活化案例:一家水果店需要提供苹果和香蕉。店主定义了“水果工厂”的规范,但不亲自生产具体水果,而是交给“苹果工厂”和“香蕉工厂”分别负责。客户只需告诉工厂要哪种水果,工厂就会返回对应的产品。

    模式结构(按模板):

角色

英文名

说明

生活化案例映射

抽象产品

Product

定义所有产品的统一接口

水果(Fruit)

具体产品

ConcreteProduct

实现抽象产品接口,是真实产出的对象

苹果(Apple)、香蕉(Banana)

抽象工厂

Creator

声明工厂方法,规定生产规范,返回产品对象

抽象水果工厂(FruitFactory)

具体工厂

ConcreteCreator

实现工厂方法,由客户调用,返回对应产品实例

苹果工厂(AppleFactory)、香蕉工厂(BananaFactory)

    代码示例:

// 1. 抽象产品:水果public interface Fruit {    voideat();}// 2. 具体产品:苹果public class Apple implements Fruit {    publicvoideat() {        System.out.println("吃苹果");    }}// 3. 具体产品:香蕉public class Banana implements Fruit {    publicvoideat() {        System.out.println("吃香蕉");    }}// 4. 抽象工厂:水果工厂public interface FruitFactory {    Fruit createFruit();}// 5. 具体工厂:苹果工厂public class AppleFactory implements FruitFactory {    public Fruit createFruit() {        return new Apple();    }}// 6. 具体工厂:香蕉工厂public class BananaFactory implements FruitFactory {    public Fruit createFruit() {        return new Banana();    }}// 7. 客户端调用public class Client {    publicstaticvoidmain(String[] args) {        FruitFactory factory = new AppleFactory();        Fruit fruit = factory.createFruit();        fruit.eat();  // 输出:吃苹果    }}

    核心特点:

    抽象工厂角色定义了工厂方法的规范,但不负责具体实现

    每个具体工厂对应一个具体产品,职责单一

    客户端只需与抽象工厂和抽象产品交互,无需知道具体产品类名

    符合“开闭原则”:新增产品只需新增对应的具体产品类和具体工厂类

    适用场景:

    客户端不知道需要创建的具体产品类型

    类本身需要将对象的创建职责委托给子类

    需要提供一种扩展机制,允许未来增加新的产品类型

抽象工厂模式

    定义:提供一个接口,可以创建一系列相关或相互依赖的对象(产品族),而无需指定它们具体的类。

    生活化案例:小米工厂、华为工厂(具体工厂),每个工厂统一生产手机、耳机、充电器(整套产品族)。只需切换工厂,就能切换整套产品体系。

    模式结构(按模板):

角色

英文名

说明

生活化案例映射

抽象产品A

AbstractProductA

定义某类产品的统一接口

手机(Phone)

抽象产品B

AbstractProductB

定义另一类产品的统一接口

耳机(Earphone)

具体产品A1/A2

ConcreteProductA1/A2

实现抽象产品A接口的具体产品

小米手机、华为手机

具体产品B1/B2

ConcreteProductB1/B2

实现抽象产品B接口的具体产品

小米耳、华为耳机

抽象工厂

AbstractFactory

声明创建一系列相关产品的方法

抽象电子工厂(ElectronicsFactory)

具体工厂

ConcreteFactory

实现抽象工厂,创建整套产品族

小米工厂(XiaomiFactory)、

华为工厂(HuaweiFactory)

    代码示例:

// 1. 抽象产品A:手机public interface Phone {    voidcall();}// 2. 抽象产品B:耳机public interface Earphone {    voidlisten();}// 3. 具体产品A1:小米手机public class XiaomiPhone implements Phone {    publicvoidcall() {        System.out.println("使用小米手机打电话");    }}// 4. 具体产品A2:华为手机public class HuaweiPhone implements Phone {    publicvoidcall() {        System.out.println("使用华为手机打电话");    }}// 5. 具体产品B1:小米耳机public class XiaomiEarphone implements Earphone {    publicvoidlisten() {        System.out.println("使用小米耳机听音乐");    }}// 6. 具体产品B2:华为耳机public class HuaweiEarphone implements Earphone {    publicvoidlisten() {        System.out.println("使用华为耳机听音乐");    }}// 7. 抽象工厂:电子工厂public interface ElectronicsFactory {    Phone createPhone();    Earphone createEarphone();}// 8. 具体工厂:小米工厂public class XiaomiFactory implements ElectronicsFactory {    public Phone createPhone() {        return new XiaomiPhone();    }    public Earphone createEarphone() {        return new XiaomiEarphone();    }}// 9. 具体工厂:华为工厂public class HuaweiFactory implements ElectronicsFactory {    public Phone createPhone() {        return new HuaweiPhone();    }    public Earphone createEarphone() {        return new HuaweiEarphone();    }}// 10. 客户端调用public class Client {    publicstaticvoidmain(String[] args) {        // 切换到小米整套产品        ElectronicsFactory factory = new XiaomiFactory();        Phone phone = factory.createPhone();        Earphone earphone = factory.createEarphone();               phone.call();      // 输出:使用小米手机打电话        earphone.listen(); // 输出:使用小米耳机听音乐               // 切换到华为整套产品(只需换工厂)        factory = new HuaweiFactory();        phone = factory.createPhone();        earphone = factory.createEarphone();               phone.call();      // 输出:使用华为手机打电话        earphone.listen(); // 输出:使用华为耳机听音乐    }}

    核心特点:

    抽象工厂定义了创建一系列相关产品的规范,不负责具体实现

    每个具体工厂对应一个产品族(如小米整套产品),职责统一

    客户端只需与抽象工厂和抽象产品交互,无需知道具体产品类名

    方便切换产品族:只需更换具体工厂,整套产品体系一键切换

    新增产品族方便:增加一个新品牌(如苹果),只需新增对应的具体工厂和具体产品类

    新增产品等级麻烦:如果要给每个工厂增加一个新品类(如平板电脑),需要修改所有抽象工厂和具体工厂

    适用场景:

    产品固定配套、多品牌、多系列成套生产场景(如手机+耳机+充电器)

    需要独立于产品的创建、组装和表示方式

    系统需要配置多个产品族之一

    强调一系列相关产品对象的设计,进行联合约束

    工厂方法 vs 抽象工厂对比:

对比项

工厂方法模式

抽象工厂模式

针对维度

一个产品等级结构

多个产品等级结构(产品族)

工厂数量

每个具体产品对应一个工厂

每个产品族对应一个工厂

扩展方向

方便新增具体产品

方便新增产品族

结构复杂度

简单

复杂

生活化案例

苹果工厂只产苹果

小米工厂产手机+耳机+充电器

原型模式

    定义:通过拷贝已有原型对象创建新对象,替代new 创建。用原型实例指定创建对象的类型。

    生活化案例:游戏怪物模板、PPT复制粘贴、批量生成相似用户数据。创建复杂对象成本高,直接克隆最快。

    模式结构(按模板):

角色

英文名

说明

生活化案例映射

抽象原型

Prototype

声明克隆方法(clone)的接口

怪物模板接口(Monster)

具体原型

ConcretePrototype

实现克隆方法,返回自身的拷贝

骷髅兵、巨魔等具体怪物

客户端

Client

调用克隆方法创建新对象,无需使用 new

游戏引擎批量生成怪物

    代码示例:

// 1. 抽象原型:怪物模板public interface Monster extends Cloneable {    Monster clone();}// 2. 具体原型:骷髅兵public class Skeleton implements Monster {    private String name;    private int health;    private int attack;       public Skeleton(String name, int health, int attack) {        this.name = name;        this.health = health;        this.attack = attack;    }     public Monster clone() {        try {            return (Skeleton) super.clone();        } catch (CloneNotSupportedException e) {            return null;        }    }    public void show() {        System.out.println("骷髅兵:" + name + ",血量:" + health + ",攻击:" + attack);    }}// 3. 客户端调用public class Client {    public static void main(String[] args) {        Skeleton prototype = new Skeleton("骷髅战士"10020);               Skeleton monster1 = (Skeleton) prototype.clone();        Skeleton monster2 = (Skeleton) prototype.clone();               monster1.show();        monster2.show();    }}

    核心特点:

    通过克隆方式创建对象,替代new 关键字

    支持浅拷贝(默认)和深拷贝(需手动实现)

    高效创建相似对象,降低复杂对象创建的资源消耗

    适用场景:

    对象创建耗时耗资源

    批量生成大量相似对象

    模板复用场景

单利模式

    定义:提供一个静态方法,让外部可以获取并使用它的唯一实例;内部实现确保只生成一个实例,保证一个类全局只有一个实例,并提供统一的全局访问点。

    生活化案例:电脑回收站、系统配置文件、数据库连接池、系统任务管理器。这类对象全局唯一,所有操作都作用于同一个实例。

    模式结构(按模板):

角色

英文名

说明

生活化案例映射

单例类

Singleton

持有自己的唯一实例,构造方法私有,对外提供静态访问方法

回收站(RecycleBin)

客户端

Client

实现抽象产品接口,是真实产出的对象

用户打开回收站

    备注:单例模式与工厂方法模式结构不同,没有抽象产品/具体产品/抽象工厂等角色,而是采用“自持有实例 + 私有构造 + 静态访问方法”的结构。

    代码示例:

// 1. 单例类:回收站public class RecycleBin {       // 2. 静态私有实例(使用 volatile 保证线程可见性)    private static volatile RecycleBin instance;    // 3. 构造方法私有化,禁止外部通过 new 创建对象    privateRecycleBin() {        System.out.println("回收站已初始化");    }    // 4. 对外暴露静态全局访问点(线程安全-双重检查锁)    publicstatic RecycleBin getInstance() {        if (instance == null) {            synchronized (RecycleBin.class) {                if (instance == null) {                    instance = new RecycleBin();                }            }        }        return instance;    }    // 5. 业务方法示例    publicvoidclean() {        System.out.println("清空回收站");    }}// 6. 客户端调用public class Client {    publicstaticvoidmain(String[] args) {        RecycleBin bin1 = RecycleBin.getInstance();        RecycleBin bin2 = RecycleBin.getInstance();               System.out.println(bin1 == bin2);  // 输出:true,同一个实例             bin1.clean();  // 输出:清空回收站    }}

    核心特点:

    构造方法私有化,禁止外部通过new创建对象

    类内部持有静态的唯一实例

    对外暴露静态方法,作为全局访问点

    线程安全是该模式高频考察点

    适用场景:

    全局配置类(如系统配置文件读取器)

    资源共享类(如数据库连接池、线程池)

    计数器(如网站访问计数器)

    日志工具类(如全局日志记录器)

建造者模式

    定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

    生活化案例:组装电脑。固定流程(装CPU → 装主板 → 装显卡 → 装内存),更换不同配件就能组装出高配/低配/办公/游戏等不同电脑。

    模式结构(按模板):

角色

英文名

说明

生活化案例映射

产品

Product

被构建的复杂对象

电脑(Computer)

抽象建造者

Builder

声明构建产品各部分的抽象方法

电脑组装规范(ComputerBuilder)

具体建造者

ConcreteBuilder

实现抽象建造者,定义具体的组装过程

高配电脑组装员、低配电脑组装员

指挥者

Director

控制构建流程,按顺序调用建造者方法

电脑组装工头

    代码示例:

// 1. 产品:电脑public class Computer {    private String cpu;    private String motherboard;    private String graphicsCard;    private String memory;       public void setCpu(String cpu) { this.cpu = cpu; }    public void setMotherboard(String motherboard) { this.motherboard = motherboard; }    public void setGraphicsCard(String graphicsCard) { this.graphicsCard = graphicsCard; }    public void setMemory(String memory) { this.memory = memory; }       public void show() {        System.out.println("电脑配置:CPU=" + cpu + ",主板=" + motherboard +                            ",显卡=" + graphicsCard + ",内存=" + memory);    }}// 2. 抽象建造者:电脑组装规范public interface ComputerBuilder {    void buildCpu();    void buildMotherboard();    void buildGraphicsCard();    void buildMemory();    Computer getResult();}// 3. 具体建造者:高配电脑public class HighConfigBuilder implements ComputerBuilder {    private Computer computer = new Computer();       public void buildCpu() { computer.setCpu("i9-13900K"); }    public void buildMotherboard() { computer.setMotherboard("Z790"); }    public void buildGraphicsCard() { computer.setGraphicsCard("RTX 4090"); }    public void buildMemory() { computer.setMemory("32GB DDR5"); }    public Computer getResult() { return computer; }}// 4. 具体建造者:低配电脑public class LowConfigBuilder implements ComputerBuilder {    private Computer computer = new Computer();       public void buildCpu() { computer.setCpu("i5-12400"); }    public void buildMotherboard() { computer.setMotherboard("B660"); }    public void buildGraphicsCard() { computer.setGraphicsCard("GTX 1660"); }    public void buildMemory() { computer.setMemory("16GB DDR4"); }    public Computer getResult() { return computer; }}// 5. 指挥者:组装工头(控制固定流程)public class Director {    private ComputerBuilder builder;     public Director(ComputerBuilder builder) {        this.builder = builder;    }    // 固定的组装流程    public Computer construct() {        builder.buildCpu();        builder.buildMotherboard();        builder.buildGraphicsCard();        builder.buildMemory();        return builder.getResult();    }}// 6. 客户端调用public class Client {    public static void main(String[] args) {        // 组装高配电脑        ComputerBuilder highBuilder = new HighConfigBuilder();        Director director = new Director(highBuilder);        Computer highComputer = director.construct();        highComputer.show();  // 输出:CPU=i9-13900K,主板=Z790,显卡=RTX 4090,内存=32GB DDR5        // 组装低配电脑(同样的流程,不同的结果)        ComputerBuilder lowBuilder = new LowConfigBuilder();        director = new Director(lowBuilder);        Computer lowComputer = director.construct();        lowComputer.show();   // 输出:CPU=i5-12400,主板=B660,显卡=GTX 1660,内存=16GB DDR4    }}

    核心特点:

    分步构建复杂对象,可以控制每一步的执行

    构建流程固定(由指挥者控制),更换建造者即可生成不同表示

    适合参数多、构造复杂的对象

    将对象的构建过程和表示分离

    适用场景:

    参数多、构造复杂、存在多种组合的对象(订单、配置、实体类)

    相同构建过程需要生成不同表示(如高配/低配电脑)

    需要屏蔽复杂对象创建的内部细节

    对象属性之间有一定的依赖关系或校验规则

    建造者 vs 工厂方法:

对比项

工厂方法模式

抽象工厂模式

复杂度

简单对象

复杂对象,需要多步构建

返回结果

一步返回完整对象

分步构建,最后返回

控制粒度

粗粒度(整体创建)

细粒度(控制每一步)

适用场景

单一产品类型

多种组合的复杂对象

创建型模式总结

模式

一句话总结

单例模式

全局唯一,禁止 new

工厂方法

每个具体产品对应一个工厂

抽象工厂

一个工厂生产一套产品族

原型模式

克隆拷贝,替代 new

建造者模式

分步构建,流程固定,结果多样

END
作者介绍

多年前端开发实战经验,坚持原创技术分享。擅长前端与 UI 设计融合,熟练运用 AI 提升开发效率,为不同阶段开发者提供可落地的思路与技巧。

仙女都在看
点点点,赞和在看都在这儿!
基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-06-02 16:56:57 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/699925.html
  2. 运行时间 : 0.255678s [ 吞吐率:3.91req/s ] 内存消耗:4,687.26kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=6c5e20a69a96a510425c926ff467b27c
  1. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_static.php ( 6.05 KB )
  7. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/ralouphie/getallheaders/src/getallheaders.php ( 1.60 KB )
  10. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  11. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  12. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  13. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  14. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  15. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  16. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  17. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  18. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  19. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions_include.php ( 0.16 KB )
  21. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions.php ( 5.54 KB )
  22. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  23. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  24. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  25. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/provider.php ( 0.19 KB )
  26. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  27. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  28. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  29. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/common.php ( 0.03 KB )
  30. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  32. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/alipay.php ( 3.59 KB )
  33. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  34. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/app.php ( 0.95 KB )
  35. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cache.php ( 0.78 KB )
  36. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/console.php ( 0.23 KB )
  37. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cookie.php ( 0.56 KB )
  38. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/database.php ( 2.48 KB )
  39. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/filesystem.php ( 0.61 KB )
  40. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/lang.php ( 0.91 KB )
  41. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/log.php ( 1.35 KB )
  42. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/middleware.php ( 0.19 KB )
  43. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/route.php ( 1.89 KB )
  44. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/session.php ( 0.57 KB )
  45. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/trace.php ( 0.34 KB )
  46. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/view.php ( 0.82 KB )
  47. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/event.php ( 0.25 KB )
  48. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  49. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/service.php ( 0.13 KB )
  50. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/AppService.php ( 0.26 KB )
  51. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  52. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  53. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  54. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  55. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  56. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/services.php ( 0.14 KB )
  57. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  58. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  59. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  60. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  61. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  62. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  63. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  64. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  65. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  66. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  67. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  68. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  69. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  70. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  71. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  72. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  73. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  74. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  75. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  76. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  77. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  78. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  79. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  80. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  81. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  82. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  83. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  84. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  85. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  86. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  87. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/Request.php ( 0.09 KB )
  88. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  89. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/middleware.php ( 0.25 KB )
  90. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  91. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  92. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  93. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  94. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  95. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  96. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  97. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  98. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  99. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  100. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  101. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  102. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  103. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/route/app.php ( 3.94 KB )
  104. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  105. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  106. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Index.php ( 9.87 KB )
  108. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/BaseController.php ( 2.05 KB )
  109. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  110. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  111. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  112. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  113. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  114. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  115. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  116. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  117. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  118. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  119. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  120. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  121. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  122. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  123. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  124. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  125. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  126. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  127. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  128. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  129. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  130. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  131. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  132. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  133. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  134. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  135. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Es.php ( 3.30 KB )
  136. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  137. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  138. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  139. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  140. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  141. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  142. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  143. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  144. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/runtime/temp/c935550e3e8a3a4c27dd94e439343fdf.php ( 31.50 KB )
  145. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000900s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001512s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.024234s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000630s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001603s ]
  6. SELECT * FROM `set` [ RunTime:0.000527s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001515s ]
  8. SELECT * FROM `article` WHERE `id` = 699925 LIMIT 1 [ RunTime:0.006545s ]
  9. UPDATE `article` SET `lasttime` = 1780390617 WHERE `id` = 699925 [ RunTime:0.018716s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.005775s ]
  11. SELECT * FROM `article` WHERE `id` < 699925 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.006057s ]
  12. SELECT * FROM `article` WHERE `id` > 699925 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.002493s ]
  13. SELECT * FROM `article` WHERE `id` < 699925 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.006670s ]
  14. SELECT * FROM `article` WHERE `id` < 699925 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.002638s ]
  15. SELECT * FROM `article` WHERE `id` < 699925 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.004012s ]
0.258205s