精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

設計模式系列—備忘錄模式

開發(fā) 前端
本篇和大家一起來學習備忘錄模式相關(guān)內(nèi)容。

 模式定義

在不破壞封裝性的前提下,捕獲一個對象的內(nèi)部狀態(tài),并在該對象之外保存這個狀態(tài),以便以后當需要時能將該對象恢復到原先保存的狀態(tài)。該模式又叫快照模式。

模版實現(xiàn)如下:

  1. package com.niuh.designpattern.memento.v1; 
  2.  
  3. /** 
  4.  * <p> 
  5.  * 備忘錄模式 
  6.  * </p> 
  7.  */ 
  8. public class MementoPattern { 
  9.     public static void main(String[] args) { 
  10.         Originator or = new Originator(); 
  11.         Caretaker cr = new Caretaker(); 
  12.         or.setState("S0"); 
  13.         System.out.println("初始狀態(tài):" + or.getState()); 
  14.         cr.setMemento(or.createMemento()); //保存狀態(tài)       
  15.         or.setState("S1"); 
  16.         System.out.println("新的狀態(tài):" + or.getState()); 
  17.         or.restoreMemento(cr.getMemento()); //恢復狀態(tài) 
  18.         System.out.println("恢復狀態(tài):" + or.getState()); 
  19.     } 
  20.  
  21. //備忘錄 
  22. class Memento { 
  23.     private String state; 
  24.  
  25.     public Memento(String state) { 
  26.         this.state = state; 
  27.     } 
  28.  
  29.     public void setState(String state) { 
  30.         this.state = state; 
  31.     } 
  32.  
  33.     public String getState() { 
  34.         return state; 
  35.     } 
  36.  
  37. //發(fā)起人 
  38. class Originator { 
  39.     private String state; 
  40.  
  41.     public void setState(String state) { 
  42.         this.state = state; 
  43.     } 
  44.  
  45.     public String getState() { 
  46.         return state; 
  47.     } 
  48.  
  49.     public Memento createMemento() { 
  50.         return new Memento(state); 
  51.     } 
  52.  
  53.     public void restoreMemento(Memento m) { 
  54.         this.setState(m.getState()); 
  55.     } 
  56.  
  57. //管理者 
  58. class Caretaker { 
  59.     private Memento memento; 
  60.  
  61.     public void setMemento(Memento m) { 
  62.         memento = m; 
  63.     } 
  64.  
  65.     public Memento getMemento() { 
  66.         return memento; 
  67.     } 

輸出結(jié)果如下:

  1. 初始狀態(tài):S0 
  2. 新的狀態(tài):S1 
  3. 恢復狀態(tài):S0 

解決的問題

備忘錄模式能記錄一個對象的內(nèi)部狀態(tài),當用戶后悔時能撤銷當前操作,使數(shù)據(jù)恢復到它原先的狀態(tài)。

每個人都有犯錯誤的時候,都希望有種“后悔藥”能彌補自己的過失,讓自己重新開始,但現(xiàn)實是殘酷的。在計算機應用中,客戶同樣會常常犯錯誤,能否提供“后悔藥”給他們呢?當然是可以的,而且是有必要的。這個功能由“備忘錄模式”來實現(xiàn)。

模式組成

 

備忘錄模式的核心是設計備忘錄類以及用于管理備忘錄的管理者類。

實例說明

實例概況

 

以游戲存檔為例,看一下如何用備忘錄模式實現(xiàn)

使用步驟

 

步驟1:定義備忘錄角色,用于存儲角色狀態(tài)。

  1. class RoleStateMemento { 
  2.  
  3.     private int vit;    //生命力 
  4.     private int atk;    //攻擊力 
  5.     private int def;    //防御力 
  6.  
  7.     public RoleStateMemento(int vit, int atk, int def) { 
  8.         this.vit = vit; 
  9.         this.atk = atk; 
  10.         this.def = def; 
  11.     } 
  12.  
  13.     public int getVit() { 
  14.         return vit; 
  15.     } 
  16.  
  17.     public void setVit(int vit) { 
  18.         this.vit = vit; 
  19.     } 
  20.  
  21.     public int getAtk() { 
  22.         return atk; 
  23.     } 
  24.  
  25.     public void setAtk(int atk) { 
  26.         this.atk = atk; 
  27.     } 
  28.  
  29.     public int getDef() { 
  30.         return def; 
  31.     } 
  32.  
  33.     public void setDef(int def) { 
  34.         this.def = def; 
  35.     } 

步驟2:定義發(fā)起人角色(當前游戲角色),記錄當前游戲角色的生命力、攻擊力、防御力。通過saveState()方法來保存當前狀態(tài),通過recoveryState()方法來恢復角色狀態(tài)。

  1. class GameRole { 
  2.  
  3.     private int vit;    //生命力 
  4.     private int atk;    //攻擊力 
  5.     private int def;    //防御力 
  6.  
  7.     public int getVit() { 
  8.         return vit; 
  9.     } 
  10.  
  11.     public void setVit(int vit) { 
  12.         this.vit = vit; 
  13.     } 
  14.  
  15.     public int getAtk() { 
  16.         return atk; 
  17.     } 
  18.  
  19.     public void setAtk(int atk) { 
  20.         this.atk = atk; 
  21.     } 
  22.  
  23.     public int getDef() { 
  24.         return def; 
  25.     } 
  26.  
  27.     public void setDef(int def) { 
  28.         this.def = def; 
  29.     } 
  30.  
  31.     //狀態(tài)顯示 
  32.     public void stateDisplay() { 
  33.         System.out.println("角色當前狀態(tài):"); 
  34.         System.out.println("體力:" + this.vit); 
  35.         System.out.println("攻擊力:" + this.atk); 
  36.         System.out.println("防御力: " + this.def); 
  37.         System.out.println("-----------------"); 
  38.     } 
  39.  
  40.     //獲得初始狀態(tài) 
  41.     public void getInitState() { 
  42.         this.vit = 100; 
  43.         this.atk = 100; 
  44.         this.def = 100; 
  45.     } 
  46.  
  47.     //戰(zhàn)斗后 
  48.     public void fight() { 
  49.         this.vit = 0; 
  50.         this.atk = 0; 
  51.         this.def = 0; 
  52.     } 
  53.  
  54.     //保存角色狀態(tài) 
  55.     public RoleStateMemento saveState() { 
  56.         return (new RoleStateMemento(vit, atk, def)); 
  57.     } 
  58.  
  59.     //恢復角色狀態(tài) 
  60.     public void recoveryState(RoleStateMemento memento) { 
  61.         this.vit = memento.getVit(); 
  62.         this.atk = memento.getAtk(); 
  63.         this.def = memento.getDef(); 
  64.     } 

步驟3:定義管理者角色,角色狀態(tài)管理者

  1. class RoleStateCaretaker { 
  2.  
  3.     private RoleStateMemento memento; 
  4.  
  5.     public RoleStateMemento getMemento() { 
  6.         return memento; 
  7.     } 
  8.  
  9.     public void setMemento(RoleStateMemento memento) { 
  10.         this.memento = memento; 
  11.     } 

步驟4:測試輸出

  1. public class MementoPattern { 
  2.  
  3.     // 邏輯大致為打boss前存檔,打boss失敗了 
  4.     public static void main(String[] args) { 
  5.         //打boss前 
  6.         GameRole gameRole = new GameRole(); 
  7.         gameRole.getInitState(); 
  8.         gameRole.stateDisplay(); 
  9.  
  10.         //保存進度 
  11.         RoleStateCaretaker caretaker = new RoleStateCaretaker(); 
  12.         caretaker.setMemento(gameRole.saveState()); 
  13.  
  14.         //打boss失敗 
  15.         gameRole.fight(); 
  16.         gameRole.stateDisplay(); 
  17.  
  18.         //恢復狀態(tài) 
  19.         gameRole.recoveryState(caretaker.getMemento()); 
  20.         gameRole.stateDisplay(); 
  21.     } 

輸出結(jié)果

  1. 角色當前狀態(tài): 
  2. 體力:100 
  3. 攻擊力:100 
  4. 防御力: 100 
  5. ----------------- 
  6. 角色當前狀態(tài): 
  7. 體力:0 
  8. 攻擊力:0 
  9. 防御力: 0 
  10. ----------------- 
  11. 角色當前狀態(tài): 
  12. 體力:100 
  13. 攻擊力:100 
  14. 防御力: 100 

優(yōu)點

備忘錄模式是一種對象行為型模式,其主要優(yōu)點如下。

  • 提供了一種可以恢復狀態(tài)的機制。當用戶需要時能夠比較方便地將數(shù)據(jù)恢復到某個歷史的狀態(tài)。
  • 實現(xiàn)了內(nèi)部狀態(tài)的封裝。除了創(chuàng)建它的發(fā)起人之外,其他對象都不能夠訪問這些狀態(tài)信息。
  • 簡化了發(fā)起人類。發(fā)起人不需要管理和保存其內(nèi)部狀態(tài)的各個備份,所有狀態(tài)信息都保存在備忘錄中,并由管理者進行管理,這符合單一職責原則。

缺點

資源消耗大。如果要保存的內(nèi)部狀態(tài)信息過多或者特別頻繁,將會占用比較大的內(nèi)存資源。

注意事項

  1. 為了符合迪米特法則,需要有一個管理備忘錄的類
  2. 不要在頻繁建立備份的場景中使用備忘錄模式。為了節(jié)約內(nèi)存,可使用原型模式+備忘錄模式

應用場景

  1. 需要保存和恢復數(shù)據(jù)的相關(guān)場景
  2. 提供一個可回滾的操作,如ctrl+z、瀏覽器回退按鈕、Backspace鍵等
  3. 需要監(jiān)控的副本場景

模式的擴展

 

在備忘錄模式中,有單狀態(tài)備份的例子,也有多狀態(tài)備份的例子??梢越Y(jié)合原型模式混合使用。在備忘錄模式中,通過定義“備忘錄”來備份“發(fā)起人”的信息,而原型模式的 clone() 方法具有自備份功能,所以,如果讓發(fā)起人實現(xiàn) Cloneable 接口就有備份自己的功能,這時可以刪除備忘錄類,其結(jié)構(gòu)如下:

源碼中的應用

  1. #Spring 
  2. org.springframework.binding.message.StateManageableMessageContext 

StateManageableMessageContext 部分源碼

  1. public interface StateManageableMessageContext extends MessageContext { 
  2.  
  3.    /** 
  4.     * Create a serializable memento, or token representing a snapshot of the internal state of this message context. 
  5.     * @return the messages memento 
  6.     */ 
  7.    public Serializable createMessagesMemento(); 
  8.  
  9.    /** 
  10.     * Set the state of this context from the memento provided. After this call, the messages in this context will match 
  11.     * what is encapsulated inside the memento. Any previous state will be overridden. 
  12.     * @param messagesMemento the messages memento 
  13.     */ 
  14.    public void restoreMessages(Serializable messagesMemento); 
  15.  
  16.    /** 
  17.     * Configure the message source used to resolve messages added to this context. May be set at any time to change how 
  18.     * coded messages are resolved. 
  19.     * @param messageSource the message source 
  20.     * @see MessageContext#addMessage(MessageResolver) 
  21.     */ 
  22.    public void setMessageSource(MessageSource messageSource); 

PS:以上代碼提交在 Github :

https://github.com/Niuh-Study/niuh-designpatterns.git

責任編輯:姜華 來源: 今日頭條
相關(guān)推薦

2023-10-07 00:14:53

2024-05-15 17:41:37

備忘錄模式多線程

2023-10-31 09:07:16

備忘錄模式保存

2023-04-19 08:03:52

Go設計模式

2025-02-17 14:48:14

2018-12-24 21:40:12

2011-08-16 18:38:23

Core Animat動畫

2017-03-21 11:02:59

基礎深度學習備忘錄

2011-04-11 10:03:32

錢伯斯思科

2023-10-10 15:26:30

內(nèi)存泄露OOM

2014-04-17 10:30:41

Linux 命令黑白備忘錄

2020-11-03 13:05:18

命令模式

2020-11-04 08:54:54

狀態(tài)模式

2020-10-23 09:40:26

設計模式

2022-01-12 13:33:25

工廠模式設計

2016-03-03 10:09:26

2013-08-29 10:50:48

移動網(wǎng)站性能優(yōu)化移動web

2018-06-20 13:14:16

MySQL數(shù)據(jù)優(yōu)化查詢備忘錄

2020-10-20 13:33:00

建造者模式

2012-01-13 15:59:07

點贊
收藏

51CTO技術(shù)棧公眾號

在线观看亚洲免费视频| 亚洲国产另类久久久精品极度| 国产亚洲精品av| 视频小说一区二区| 欧美日韩一卡二卡三卡| 久久久久久久香蕉| 你懂的视频在线播放| 蜜臀av国产精品久久久久| 欧美成人精品激情在线观看| 国产白嫩美女无套久久| 国产福利亚洲| 精品久久久久久中文字幕大豆网 | 亚洲精品777| 亚洲网友自拍偷拍| 欧美亚洲爱爱另类综合| 国产熟女精品视频| 久久成人精品| 欧美精品xxx| 天天摸日日摸狠狠添| 国产精品巨作av| 欧美日韩高清影院| 成人在线观看a| 美洲精品一卡2卡三卡4卡四卡| 国产日韩精品一区二区浪潮av | 神马香蕉久久| 日韩视频免费观看高清完整版在线观看 | 欧美一级淫片aaaaaa| 精品一区二区免费视频| 欧美在线亚洲在线| 久久国产一级片| 五月婷婷六月综合| 在线播放精品一区二区三区| 男女一区二区三区| 日韩精品三级| 91精品国产综合久久香蕉麻豆| 国产精品亚洲二区在线观看| av影视在线看| 亚洲一区自拍偷拍| 8x8ⅹ国产精品一区二区二区| 国产51人人成人人人人爽色哟哟| 97se亚洲国产综合在线| 高清不卡日本v二区在线| 中文字幕你懂的| 日韩av中文字幕一区二区| 欧美自拍视频在线| 黄色一级片免费在线观看| 精品二区久久| 国精产品一区一区三区有限在线| 国产日韩欧美在线观看视频| 天天做综合网| 久久伊人色综合| 欧美爱爱免费视频| 亚洲a在线视频| 美女福利视频一区| 男的操女的网站| 欧美在线播放| 欧美疯狂xxxx大交乱88av| 九九久久免费视频| 欧美精品综合| 久久久亚洲国产| 四虎成人精品永久免费av| 亚洲高清免费| 热久久免费视频精品| 国产污视频网站| 免费看精品久久片| 91亚洲精品久久久久久久久久久久| 国产一区二区在线视频观看| 国产中文字幕一区| 成人av免费电影| 五月婷婷久久久| 久久久另类综合| 亚洲午夜精品久久久久久浪潮| 日本福利专区在线观看| 最新不卡av在线| 美脚丝袜脚交一区二区| 高潮在线视频| 欧美午夜精品久久久久久超碰| 天天干天天草天天| 日韩精品久久久久久久软件91| 精品久久久久久久人人人人传媒| 日韩aaaaa| 精品国产123区| 久久视频在线播放| 国产精品无码久久久久一区二区| 一区二区三区韩国免费中文网站| 在线日韩第一页| 国产波霸爆乳一区二区| 一级成人国产| 国产在线视频一区| 色一情一乱一区二区三区| 久久久www免费人成精品| 亚洲韩国在线| 成人福利影视| 欧美午夜电影在线播放| 日本wwww色| 国产成人精品免费视| 久久亚洲精品小早川怜子66| 青娱乐国产盛宴| 久久精品麻豆| 51国偷自产一区二区三区| 青青青草原在线| 亚洲美女视频在线| 国产视频一区二区视频| 视频在线观看免费影院欧美meiju| 精品小视频在线| 91在线播放观看| 免费在线看一区| 精品久久一区二区三区蜜桃| 蜜桃视频在线观看www社区 | 中文字幕91爱爱| 99久久国产综合色|国产精品| 亚洲国产精品毛片| 精品三级久久| 日韩区在线观看| 亚洲高潮女人毛茸茸| 日韩图片一区| 亚洲一区美女视频在线观看免费| 国产高清一区在线观看| 亚洲一区二区三区小说| 国产福利在线免费| 精品国产99| 欧美亚洲另类视频| 高潮毛片7777777毛片| 最新欧美精品一区二区三区| av丝袜天堂网| 亚洲人成亚洲精品| 欧美专区18| 亚洲欧美日韩精品久久| 久久久夜色精品| 久久99九九99精品| 亚洲欧美久久久久一区二区三区| 日韩影院在线| 亚洲国产精彩中文乱码av在线播放 | 成人午夜淫片100集| 国产成a人无v码亚洲福利| 亚洲欧美日韩在线综合| 成人黄色图片网站| 亚洲视频axxx| 人人爽人人爽人人片av| 91视频免费看| 久久久999视频| 欧美偷窥清纯综合图区| 97精品一区二区三区| 亚洲欧美另类视频| 亚洲影院久久精品| 国产a级黄色片| 影院欧美亚洲| 国产无套精品一区二区| 爱情岛论坛亚洲品质自拍视频网站| 欧美精品第一页| chinese全程对白| 国产自产v一区二区三区c| 91社在线播放| 日韩视频在线直播| 欧美激情在线狂野欧美精品| 国产小视频免费观看| 亚洲一区二区三区国产| 污污免费在线观看| 国产日本精品| 欧美亚洲丝袜| 精品九九久久| 欧美成人三级视频网站| 午夜精品久久久久久久爽| 一区二区三区在线观看动漫| 国偷自产av一区二区三区麻豆| 国产综合精品| 精品伦精品一区二区三区视频| 色是在线视频| 一区二区三区日韩在线| 国产免费的av| 亚洲成a人在线观看| 国产又爽又黄无码无遮挡在线观看| 久久久久久9| 亚洲欧洲免费无码| 日韩精品一区二区三区中文在线| 欧美华人在线视频| 你懂得在线网址| 欧美欧美午夜aⅴ在线观看| 一级黄色录像视频| 97se狠狠狠综合亚洲狠狠| 国产区二区三区| 一区二区蜜桃| 久久免费看av| 日韩福利影视| 97精品伊人久久久大香线蕉 | 妺妺窝人体色777777| 亚洲国产欧美日韩在线观看第一区 | 777777国产7777777| 成人性生交大片| 麻豆传传媒久久久爱| 66国产精品| 玛丽玛丽电影原版免费观看1977 | 欧美美女直播网站| 国产无套在线观看| 亚洲国产精品精华液2区45| 亚洲三级在线视频| 久久久久99| 青青草原网站在线观看| 亚欧日韩另类中文欧美| 成人免费在线视频网站| 美女av在线免费看| 久久中文字幕国产| 欧美孕妇孕交| 日韩精品一区二区三区在线 | 黄色在线看片| 中文字幕日韩有码| 香蕉久久一区二区三区| 7777精品伊人久久久大香线蕉| 日韩成人av毛片| 18欧美乱大交hd1984| 欧美图片一区二区| 国产成人在线免费观看| 三级a在线观看| 日韩一级免费| 国产尤物av一区二区三区| 成人aaaa| 麻豆久久久9性大片| 99re8这里有精品热视频8在线| 国产精品欧美日韩一区二区| 国产一二三在线| 欧美激情视频播放| 在线免费av导航| 在线成人一区二区| 欧美高清电影在线| 亚洲高清福利视频| 性生活免费网站| 91精品国产综合久久精品麻豆 | 性高湖久久久久久久久| 国产av熟女一区二区三区| 欧美电影三区| 色综合视频二区偷拍在线| 欧美黑人巨大videos精品| 成人区精品一区二区| 亚洲伊人精品酒店| 国产日韩欧美中文| se69色成人网wwwsex| 国产不卡在线观看| 国产美女高潮在线观看| 久久精品欧美| 亚欧在线免费观看| 夜夜精品视频| 99热亚洲精品| 精品电影一区| 男人插女人视频在线观看| 欧美日韩国产免费观看| 乱熟女高潮一区二区在线| 91精品综合| 妞干网这里只有精品| 自产国语精品视频| 福利在线小视频| 午夜精品婷婷| 中文字幕无码精品亚洲资源网久久| 欧美三区不卡| 日韩五码在线观看| 99在线精品免费视频九九视| 欧美不卡在线播放| 亚洲在线网站| 黄色片一级视频| 日本欧美一区二区| 亚洲天堂网2018| 啪啪免费视频一区| 日本一区二区三区视频视频| 久久久视频6r| 中文字幕在线观看不卡| 极品盗摄国产盗摄合集| 亚洲一区二区精品久久av| 香蕉免费毛片视频| 色婷婷国产精品久久包臀| 波多野结衣一区二区在线| 欧美视频在线观看一区二区| 91中文字幕在线视频| 日韩欧美电影在线| 天堂在线中文| 日韩在线小视频| 亚洲91av| 日本免费久久高清视频| 欧美成人免费全部网站| 91免费版黄色| 亚洲婷婷伊人| 欧美日韩一级在线 | 午夜久久久久久久久久久| 国产综合精品| 天天操天天摸天天爽| 国产一本一道久久香蕉| 亚州av综合色区无码一区| 中文字幕精品—区二区四季| 亚洲色偷偷综合亚洲av伊人| 亚洲风情在线资源站| 中文字幕乱码在线观看| 精品久久久久久久人人人人传媒 | 久久精品亚洲一区| av日韩中文| 成人h视频在线观看播放| 美日韩黄色大片| 中文字幕成人一区| 国产日韩欧美在线播放不卡| 日本不卡一区二区在线观看| 粉嫩aⅴ一区二区三区四区五区 | 黄色网在线播放| 中文字幕日韩欧美在线| 国产乱码在线| 国产日本欧美一区二区三区在线 | 日本性爱视频在线观看| 国产精品h在线观看| jizz国产精品| 综合视频在线观看| 欧美亚洲一级| 中文字幕第九页| 国产精品不卡视频| 无码人妻一区二区三区免费| 日韩精品一区二| 秋霞午夜在线观看| 日本在线观看天堂男亚洲| 超碰在线成人| 国产人妻互换一区二区| 日本不卡免费在线视频| 亚洲视频在线播放免费| 亚洲欧美日韩人成在线播放| 波多野结衣影片| 亚洲女人被黑人巨大进入| xxxx另类黑人| 亚洲一区中文字幕| 我不卡手机影院| 少妇特黄a一区二区三区| av成人天堂| 中文字幕第3页| 亚洲一区二区综合| 亚洲va久久久噜噜噜无码久久| 日韩亚洲欧美中文高清在线| 日本欧美韩国| 欧洲亚洲一区二区| 久久国产主播| 久久久久亚洲av成人无码电影| 亚洲国产一区在线观看| 精品国产伦一区二区三区| 久久激情视频免费观看| 精品久久久网| 亚洲精品tv久久久久久久久| 肉色丝袜一区二区| 亚洲精品国产精品国自产网站| 亚洲女同另类| 国产精品欧美在线| 欧美日韩中文字幕一区二区三区| av网站在线观看不卡| 99riav一区二区三区| 中文字幕亚洲精品一区| 国产婷婷成人久久av免费高清 | 国产精品久久久久77777| 国产欧美日韩精品一区二区免费| 午夜精品久久久久久久无码 | www久久久久久久| 在线精品观看国产| 最新97超碰在线| 成人激情视频网| 欧美女激情福利| a级片在线观看视频| 午夜精品福利一区二区蜜股av| 韩国av在线免费观看| 97视频在线观看亚洲| 亚洲成a人片77777在线播放| 爱情岛论坛成人| 国产精品理论在线观看| 国产视频第一页| 欧美激情乱人伦一区| 午夜精品福利影院| 人人爽人人av| 亚洲欧洲性图库| 亚洲AV无码精品自拍| 97在线免费视频| 国产精品欧美三级在线观看| 亚洲最大成人在线观看| |精品福利一区二区三区| 亚洲产国偷v产偷v自拍涩爱| 韩日欧美一区二区| 欧美精选视频在线观看| 青娱乐国产精品视频| 亚洲电影激情视频网站| 可以免费看污视频的网站在线| 国产日本欧美一区二区三区在线| 欧美区国产区| 自拍偷拍视频亚洲| 9191国产精品| 精品丝袜在线| 在线看视频不卡| zzijzzij亚洲日本少妇熟睡| 亚洲精品国产无码| 欧美精品在线视频观看| 天天操综合520| 97人人爽人人| 精品国产鲁一鲁一区二区张丽| porn视频在线观看| 国产激情一区二区三区在线观看| 久久深夜福利| 国产1区2区3区4区| 亚洲视频777| 精品国产一区二区三区不卡蜜臂 | 日韩精品中文字| 国产精品1区| 黄色国产小视频| 亚洲午夜免费福利视频|