{"id":5750,"date":"2022-07-31T16:56:39","date_gmt":"2022-07-31T08:56:39","guid":{"rendered":"https:\/\/1989lifejourney.com\/?p=5750"},"modified":"2022-07-31T16:57:06","modified_gmt":"2022-07-31T08:57:06","slug":"design-pattern%e5%ad%b8%e7%bf%92-3-singleton%e5%96%ae%e4%be%8b%e6%a8%a1%e5%bc%8f","status":"publish","type":"post","link":"https:\/\/1989lifejourney.com\/?p=5750","title":{"rendered":"Design pattern\u5b78\u7fd2 &#8211; 3 (Singleton\u55ae\u4f8b\u6a21\u5f0f)"},"content":{"rendered":"\n<h3 class=\"wp-block-heading\">\u76ee\u7684:<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u4fdd\u8b49\u4e00\u500b\u985e\u5225\u53ea\u6703\u7522\u751f\u4e00\u500b\u7269\u4ef6\uff0c\u800c\u4e14\u8981\u63d0\u4f9b\u5b58\u53d6\u8a72\u7269\u4ef6\u7684\u7d71\u4e00\u65b9\u6cd5<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>\u9808\u8003\u616e\u7684\u60c5\u5883:<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li>lazy initialization<\/li><li>Multithread<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Swift sample:<\/h3>\n\n\n\n<figure class=\"wp-block-embed is-type-rich is-provider-embed-handler wp-block-embed-embed-handler\"><div class=\"wp-block-embed__wrapper\">\n<style>.gist table { margin-bottom: 0; }<\/style><div style=\"tab-size: 8\" id=\"gist117392067\" class=\"gist\">\n    <div class=\"gist-file\" translate=\"no\" data-color-mode=\"light\" data-light-theme=\"light\">\n      <div class=\"gist-data\">\n        \n<div class=\"js-gist-file-update-container js-task-list-container\">\n      <div id=\"file-singleton-swift\" class=\"file my-2\">\n    \n    <div itemprop=\"text\"\n      class=\"Box-body p-0 blob-wrapper data type-swift  \"\n      style=\"overflow: auto\" tabindex=\"0\" role=\"region\"\n      aria-label=\"Singleton.swift content, created by tgnivekucn on 11:09AM on July 17, 2022.\"\n    >\n\n        \n<div class=\"js-check-hidden-unicode js-blob-code-container blob-code-content\">\n\n  <template class=\"js-file-alert-template\">\n  <div data-view-component=\"true\" class=\"flash flash-warn flash-full d-flex flex-items-center\">\n  <svg aria-hidden=\"true\" data-component=\"Octicon\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-alert\">\n    <path d=\"M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z\"><\/path>\n<\/svg>\n    <span>\n      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.\n      <a class=\"Link--inTextBlock\" href=\"https:\/\/github.co\/hiddenchars\" target=\"_blank\">Learn more about bidirectional Unicode characters<\/a>\n    <\/span>\n\n\n  <div data-view-component=\"true\" class=\"flash-action\">        <a href=\"{{ revealButtonHref }}\" data-view-component=\"true\" class=\"btn-sm btn\">    Show hidden characters\n<\/a>\n<\/div>\n<\/div><\/template>\n<template class=\"js-line-alert-template\">\n  <span aria-label=\"This line has hidden Unicode characters\" data-view-component=\"true\" class=\"line-alert tooltipped tooltipped-e\">\n    <svg aria-hidden=\"true\" data-component=\"Octicon\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-alert\">\n    <path d=\"M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z\"><\/path>\n<\/svg>\n<\/span><\/template>\n\n  <table data-hpc class=\"highlight tab-size js-file-line-container\" data-tab-size=\"4\" data-paste-markdown-skip data-tagsearch-path=\"Singleton.swift\">\n        <tr>\n          <td id=\"file-singleton-swift-L1\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"1\"><\/td>\n          <td id=\"file-singleton-swift-LC1\" class=\"blob-code blob-code-inner js-file-line\">\/\/ lazy Singleton: create the singleton object when needed<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-singleton-swift-L2\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"2\"><\/td>\n          <td id=\"file-singleton-swift-LC2\" class=\"blob-code blob-code-inner js-file-line\">\/\/ Note: Global constants and variables are always computed lazily<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-singleton-swift-L3\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"3\"><\/td>\n          <td id=\"file-singleton-swift-LC3\" class=\"blob-code blob-code-inner js-file-line\">\/\/ ref: <a href=\"https:\/\/docs.swift.org\/swift-book\/LanguageGuide\/Properties.html#ID263\" rel=\"nofollow\">https:\/\/docs.swift.org\/swift-book\/LanguageGuide\/Properties.html#ID263<\/a><\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-singleton-swift-L4\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"4\"><\/td>\n          <td id=\"file-singleton-swift-LC4\" class=\"blob-code blob-code-inner js-file-line\">class SingletonGreed {<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-singleton-swift-L5\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"5\"><\/td>\n          <td id=\"file-singleton-swift-LC5\" class=\"blob-code blob-code-inner js-file-line\">    static let shared = SingletonGreed()<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-singleton-swift-L6\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"6\"><\/td>\n          <td id=\"file-singleton-swift-LC6\" class=\"blob-code blob-code-inner js-file-line\">    private init() {}<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-singleton-swift-L7\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"7\"><\/td>\n          <td id=\"file-singleton-swift-LC7\" class=\"blob-code blob-code-inner js-file-line\">}<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-singleton-swift-L8\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"8\"><\/td>\n          <td id=\"file-singleton-swift-LC8\" class=\"blob-code blob-code-inner js-file-line\">\n<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-singleton-swift-L9\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"9\"><\/td>\n          <td id=\"file-singleton-swift-LC9\" class=\"blob-code blob-code-inner js-file-line\">class SingletonThreadSafe {<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-singleton-swift-L10\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"10\"><\/td>\n          <td id=\"file-singleton-swift-LC10\" class=\"blob-code blob-code-inner js-file-line\">    private static var shared: SingletonThreadSafe?<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-singleton-swift-L11\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"11\"><\/td>\n          <td id=\"file-singleton-swift-LC11\" class=\"blob-code blob-code-inner js-file-line\">    private init() {}<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-singleton-swift-L12\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"12\"><\/td>\n          <td id=\"file-singleton-swift-LC12\" class=\"blob-code blob-code-inner js-file-line\">    static func getInstance() -&gt; SingletonThreadSafe {<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-singleton-swift-L13\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"13\"><\/td>\n          <td id=\"file-singleton-swift-LC13\" class=\"blob-code blob-code-inner js-file-line\">        if shared == nil {<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-singleton-swift-L14\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"14\"><\/td>\n          <td id=\"file-singleton-swift-LC14\" class=\"blob-code blob-code-inner js-file-line\">            synced(self) {<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-singleton-swift-L15\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"15\"><\/td>\n          <td id=\"file-singleton-swift-LC15\" class=\"blob-code blob-code-inner js-file-line\">                if shared == nil {<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-singleton-swift-L16\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"16\"><\/td>\n          <td id=\"file-singleton-swift-LC16\" class=\"blob-code blob-code-inner js-file-line\">                    shared = SingletonThreadSafe()<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-singleton-swift-L17\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"17\"><\/td>\n          <td id=\"file-singleton-swift-LC17\" class=\"blob-code blob-code-inner js-file-line\">                }<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-singleton-swift-L18\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"18\"><\/td>\n          <td id=\"file-singleton-swift-LC18\" class=\"blob-code blob-code-inner js-file-line\">            }<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-singleton-swift-L19\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"19\"><\/td>\n          <td id=\"file-singleton-swift-LC19\" class=\"blob-code blob-code-inner js-file-line\">        }<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-singleton-swift-L20\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"20\"><\/td>\n          <td id=\"file-singleton-swift-LC20\" class=\"blob-code blob-code-inner js-file-line\">        return shared!<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-singleton-swift-L21\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"21\"><\/td>\n          <td id=\"file-singleton-swift-LC21\" class=\"blob-code blob-code-inner js-file-line\">    }<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-singleton-swift-L22\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"22\"><\/td>\n          <td id=\"file-singleton-swift-LC22\" class=\"blob-code blob-code-inner js-file-line\">\n<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-singleton-swift-L23\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"23\"><\/td>\n          <td id=\"file-singleton-swift-LC23\" class=\"blob-code blob-code-inner js-file-line\">    static func synced(_ lock: Any, closure: () -&gt; ()) {<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-singleton-swift-L24\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"24\"><\/td>\n          <td id=\"file-singleton-swift-LC24\" class=\"blob-code blob-code-inner js-file-line\">        objc_sync_enter(lock)<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-singleton-swift-L25\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"25\"><\/td>\n          <td id=\"file-singleton-swift-LC25\" class=\"blob-code blob-code-inner js-file-line\">        closure()<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-singleton-swift-L26\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"26\"><\/td>\n          <td id=\"file-singleton-swift-LC26\" class=\"blob-code blob-code-inner js-file-line\">        objc_sync_exit(lock)<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-singleton-swift-L27\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"27\"><\/td>\n          <td id=\"file-singleton-swift-LC27\" class=\"blob-code blob-code-inner js-file-line\">    }<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-singleton-swift-L28\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"28\"><\/td>\n          <td id=\"file-singleton-swift-LC28\" class=\"blob-code blob-code-inner js-file-line\">}<\/td>\n        <\/tr>\n  <\/table>\n<\/div>\n\n\n    <\/div>\n\n  <\/div>\n\n<\/div>\n\n      <\/div>\n      <div class=\"gist-meta\">\n        <a href=\"https:\/\/gist.github.com\/tgnivekucn\/4c46443311f2ffbd178c43f5373b8066\/raw\/7c5f87173208adef471290c8a892a04cb24dc238\/Singleton.swift\" style=\"float:right\" class=\"Link--inTextBlock\">view raw<\/a>\n        <a href=\"https:\/\/gist.github.com\/tgnivekucn\/4c46443311f2ffbd178c43f5373b8066#file-singleton-swift\" class=\"Link--inTextBlock\">\n          Singleton.swift\n        <\/a>\n        hosted with &#10084; by <a class=\"Link--inTextBlock\" href=\"https:\/\/github.com\">GitHub<\/a>\n      <\/div>\n    <\/div>\n<\/div>\n\n<\/div><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Java sample:<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u76ee\u7684: \u4fdd\u8b49\u4e00\u500b\u985e\u5225\u53ea\u6703\u7522\u751f\u4e00\u500b\u7269\u4ef6\uff0c\u800c\u4e14\u8981\u63d0\u4f9b\u5b58\u53d6\u8a72\u7269\u4ef6\u7684\u7d71\u4e00\u65b9\u6cd5 \u9808\u8003\u616e\u7684\u60c5\u5883: lazy initial [&hellip;]<\/p>\n","protected":false},"author":139426785,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","_postgate_lock_override":"inherit","_postgate_lock_mode":"inherit","_postgate_preview_mode":"inherit","_postgate_preview_limit":0,"_postgate_product_ids":[],"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"jetpack_seo_schema_type":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":true,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_wpcom_ai_launchpad_first_post":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"{title}\n\n{excerpt}\n\n{url}","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"_wpas_customize_per_network":false,"jetpack_post_was_ever_published":false},"categories":[36769,11176,1],"tags":[],"post_folder":[],"class_list":["post-5750","post","type-post","status-publish","format-standard","hentry","category-design-pattern","category-software-engineering","category-uncategorized"],"jetpack_publicize_connections":[],"jetpack_likes_enabled":true,"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/paR5vw-1uK","jetpack-related-posts":[{"id":5771,"url":"https:\/\/1989lifejourney.com\/?p=5771","url_meta":{"origin":5750,"position":0},"title":"Design pattern\u5b78\u7fd2 &#8211; 4 (Simple Factory\u7c21\u55ae\u5de5\u5ee0\u6a21\u5f0f)","author":"Kevin","date":"31 7 \u6708, 2022","format":false,"excerpt":"\u76ee\u7684: \u5b9a\u7fa9\u4e00\u500b\u7c21\u55ae\u5de5\u5ee0\uff0c\u50b3\u5165\u4e0d\u540c\u7684\u53c3\u6578\u53d6\u5f97\u4e0d\u540c\u7684\u985e\u5225\u7269\u4ef6\u3002 \u5099\u8a3b: Simple Factory\u5176\u2026","rel":"","context":"\u5728\u300cDesign Pattern\u300d\u4e2d","block_context":{"text":"Design Pattern","link":"https:\/\/1989lifejourney.com\/?cat=36769"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":5776,"url":"https:\/\/1989lifejourney.com\/?p=5776","url_meta":{"origin":5750,"position":1},"title":"Design pattern\u5b78\u7fd2 &#8211; 5 (Factory\u5de5\u5ee0\u6a21\u5f0f)","author":"Kevin","date":"31 7 \u6708, 2022","format":false,"excerpt":"\u76ee\u7684: \u63d0\u4f9b\u4e00\u500b\u5de5\u5ee0\u4ecb\u9762\uff0c\u5c07\u7522\u751f\u5be6\u9ad4\u7684\u7a0b\u5f0f\u78bc\u4ea4\u7531\u5b50\u985e\u5225\u5404\u81ea\u5be6\u73fe\u3002 \u5099\u8a3b: \u7c21\u55ae\u5de5\u5ee0\u6a21\u5f0f\u548c\u5de5\u5ee0\u6a21\u5f0f\u6bd4\u8f03\u2026","rel":"","context":"\u5728\u300cDesign Pattern\u300d\u4e2d","block_context":{"text":"Design Pattern","link":"https:\/\/1989lifejourney.com\/?cat=36769"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":5727,"url":"https:\/\/1989lifejourney.com\/?p=5727","url_meta":{"origin":5750,"position":2},"title":"Design Pattern\u5b78\u7fd2 &#8211; 1","author":"Kevin","date":"10 7 \u6708, 2022","format":false,"excerpt":"\u4ee5\u4e0b\u8cc7\u6599\u4f86\u6e90\u5927\u90e8\u5206\u90fd\u662f\u5f9e\u4e0b\u9762\u9019\u500b\u7db2\u7ad9\u800c\u4f86\uff0c\u9019\u88e1\u50c5\u4f5c\u500b\u4eba\u7b46\u8a18\u6574\u7406:\u53c3\u8003\u7db2\u7ad9: https:\/\/skyy\u2026","rel":"","context":"\u5728\u300cDesign Pattern\u300d\u4e2d","block_context":{"text":"Design Pattern","link":"https:\/\/1989lifejourney.com\/?cat=36769"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":7125,"url":"https:\/\/1989lifejourney.com\/?p=7125","url_meta":{"origin":5750,"position":3},"title":"Design pattern &#8211; Observer pattern","author":"Kevin","date":"5 3 \u6708, 2023","format":false,"excerpt":"\u54ea\u7a2eDesign pattern(Creational\/Structural\/Behavioural\u2026","rel":"","context":"\u5728\u300cDesign Pattern\u300d\u4e2d","block_context":{"text":"Design Pattern","link":"https:\/\/1989lifejourney.com\/?cat=36769"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":6298,"url":"https:\/\/1989lifejourney.com\/?p=6298","url_meta":{"origin":5750,"position":4},"title":"\u5b78\u5230\u7684design pattern\u6574\u7406","author":"Kevin","date":"16 12 \u6708, 2022","format":false,"excerpt":"Creational patterns: Abstract factory Dependency I\u2026","rel":"","context":"\u5728\u300cDesign Pattern\u300d\u4e2d","block_context":{"text":"Design Pattern","link":"https:\/\/1989lifejourney.com\/?cat=36769"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":16575,"url":"https:\/\/1989lifejourney.com\/?p=16575","url_meta":{"origin":5750,"position":5},"title":"Senior\/Junior\/AI coding\u5dee\u7570\u5206\u6790 (AI\u6574\u7406)","author":"Kevin","date":"2 9 \u6708, 2026","format":false,"excerpt":"Junior \u5728\u5b8c\u6210\u65b9\u6848\u3002AI \u5728\u751f\u6210\u65b9\u6848\u3002Senior \u5728\u4ef2\u88c1\u65b9\u6848\uff0c\u5fc5\u8981\u6642\u9023\u300c\u554f\u984c\u539f\u672c\u662f\u600e\u9ebc\u88ab\u5b9a\u7fa9\u2026","rel":"","context":"\u985e\u4f3c\u6587\u7ae0","block_context":{"text":"\u985e\u4f3c\u6587\u7ae0","link":""},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/1989lifejourney.com\/index.php?rest_route=\/wp\/v2\/posts\/5750","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/1989lifejourney.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/1989lifejourney.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/1989lifejourney.com\/index.php?rest_route=\/wp\/v2\/users\/139426785"}],"replies":[{"embeddable":true,"href":"https:\/\/1989lifejourney.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=5750"}],"version-history":[{"count":7,"href":"https:\/\/1989lifejourney.com\/index.php?rest_route=\/wp\/v2\/posts\/5750\/revisions"}],"predecessor-version":[{"id":5770,"href":"https:\/\/1989lifejourney.com\/index.php?rest_route=\/wp\/v2\/posts\/5750\/revisions\/5770"}],"wp:attachment":[{"href":"https:\/\/1989lifejourney.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=5750"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/1989lifejourney.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=5750"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/1989lifejourney.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=5750"},{"taxonomy":"post_folder","embeddable":true,"href":"https:\/\/1989lifejourney.com\/index.php?rest_route=%2Fwp%2Fv2%2Fpost_folder&post=5750"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}