日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

领域驱动设计战术模式:领域服务

發布時間:2024/1/8 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 领域驱动设计战术模式:领域服务 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

領域驅動設計戰術部分,是一組面向業務的設計模式,是基于技術的一種思維方式,相對開發人員來說更接地氣,是提升個人格局比較好的切入點。

該文章為戰術模式的第四篇,重心講解領域服務模式。

在建模時,有時會遇到一些業務邏輯的概念,它放在實體或值對象中都不太合適。這就是可能需要創建領域服務的一個信號。從概念上說,領域服務代表領域概念,它們是存在于問題域中的行為,它們產生于與領域專家的對話中,并且是領域模型的一部分。

通過本 Chat,您可以:

  • 理解領域服務
  • 實現領域服務
  • 領域服務建模模式
  • 小結
  • 在建模時,有時會遇到一些業務邏輯的概念,它放在實體或值對象中都不太合適。這就是可能需要創建領域服務的一個信號。

    1 理解領域服務

    從概念上說,領域服務代表領域概念,它們是存在于問題域中的行為,它們產生于與領域專家的對話中,并且是領域模型的一部分。

    模型中的領域服務表示一個無狀態的操作,他用于實現特定于某個領域的任務。當領域中某個操作過程或轉化過程不是實體或值對象的職責時,我們便應該將該操作放在一個單獨的元素中,即領域服務。同時務必保持該領域服務與通用語言是一致的,并且保證它是無狀態的。

    領域服務有幾個重要的特征:

    • 它代表領域概念。
    • 它與通用語言保存一致,其中包括命名和內部邏輯。
    • 它無狀態。
    • 領域服務與聚合在同一包中。

    1.1 何時使用領域服務

    如果某操作不適合放在聚合和值對象上時,最好的方式便是將其建模成領域服務。

    一般情況下,我們使用領域服務來組織實體、值對象并封裝業務概念。領域服務適用場景如下:

    • 執行一個顯著的業務操作過程。
    • 對領域對象進行轉換。
    • 以多個領域對象作為輸入,進行計算,產生一個值對象。

    1.2 避免貧血領域模型

    當你認同并非所有的領域行為都需要封裝在實體或值對象中,并明確領域服務是有用的建模手段后,就需要當心了。不要將過多的行為放到領域服務中,這樣將導致貧血領域模型。

    如果將過多的邏輯推入領域服務中,將導致不準確、難理解、貧血并且低概念的領域模型。顯然,這樣會抵消 DDD 的很多好處。

    領域服務是排在值對象、實體模式之后的一個選項。有時,不得已為之是個比較好的方案。

    1.3 與應用服務的對比

    應用服務,并不會處理業務邏輯,它是領域模型直接客戶,進而是領域服務的客戶方。

    領域服務代表了存在于問題域內部的概念,他們的接口存在于領域模型中。相反,應用服務不表示領域概念,不包含業務規則,通常,他們不存在于領域模型中。

    應用服務存在于服務層,處理像事務、訂閱、存儲等基礎設施問題,以執行完整的業務用例。

    應用服務從用戶用例出發,是領域的直接用戶,與領域關系密切,會有專門章節進行詳解。

    1.4 與基礎設施服務的對比

    基礎設施服務,從技術角度出發,為解決通用問題而進行的抽象。

    比較典型的如,郵件發送服務、短信發送服務、定時服務等。

    2. 實現領域服務

    2.1 封裝業務概念

    領域服務的執行一般會涉及實體或值對象,在其基礎之上將行為封裝成業務概念。

    比較常見的就是銀行轉賬,首先銀行轉賬具有明顯的領域概念,其次,由于同時涉及兩個賬號,該行為放在賬號聚合中不太合適。因此,可以將其建模成領域服務。

    public class Account extends JpaAggregate { private Long totalAmount; public void checkBalance(Long amount) { if (amount > this.totalAmount){ throw new IllegalArgumentException("余額不足"); } } public void reduce(Long amount) { this.totalAmount = this.totalAmount - amount; } public void increase(Long amount) { this.totalAmount = this.totalAmount + amount; }}

    Account 提供余額檢測、扣除和添加等基本功能。

    public class TransferService implements DomainService { public void transfer(Account from, Account to, Long amount){ from.checkBalance(amount); from.reduce(amount); to.increase(amount); }}

    TransferService 按照業務規則,指定轉賬流程。

    TransferService 明確定義了一個存在于通用語言的一個領域概念。領域服務存在于領域模型中,包含重要的業務規則。

    2.2 業務計算

    業務計算,主要以實體或值對象作為輸入,通過計算,返回一個實體或值對象。

    常見場景如計算一個訂單應用特定優惠策略后的應付金額。

    public class OrderItem { private Long price; private Integer count; public Long getTotalPrice(){ return price * count; }}

    OrderItem 中包括產品單價和產品數量,getTotalPrice 通過計算獲取總價。

    public class Order { private List<OrderItem> items = Lists.newArrayList(); public Long getTotalPrice(){ return this.items.stream() .mapToLong(orderItem -> orderItem.getTotalPrice()) .sum(); }}

    Order 由多個 OrderItem 組成,getTotalPrice 遍歷所有的 OrderItem,計算訂單總價。

    public class OrderAmountCalculator { public Long calculate(Order order, PreferentialStrategy preferentialStrategy){ return preferentialStrategy.calculate(order.getTotalPrice()); }}

    OrderAmountCalculator 以實體 Order 和領域服務 PreferentialStrategy 為輸入,在訂單總價基礎上計算折扣價格,返回打折之后的價格。

    2.3 規則切換

    根據業務流程,動態對規則進行切換。

    還是以訂單的優化策略為例。

    public interface PreferentialStrategy { Long calculate(Long amount);}

    PreferentialStrategy 為策略接口。

    public class FullReductionPreferentialStrategy implements PreferentialStrategy{ private final Long fullAmount; private final Long reduceAmount; public FullReductionPreferentialStrategy(Long fullAmount, Long reduceAmount) { this.fullAmount = fullAmount; this.reduceAmount = reduceAmount; } @Override public Long calculate(Long amount) { if (amount > fullAmount){ return amount - reduceAmount; } return amount; }}

    FullReductionPreferentialStrategy 為滿減策略,當訂單總金額超過特定值時,直接進行減免。

    public class FixedDiscountPreferentialStrategy implements PreferentialStrategy{ private final Double descount; public FixedDiscountPreferentialStrategy(Double descount) { this.descount = descount; } @Override public Long calculate(Long amount) { return Math.round(amount * descount); }}

    FixedDiscountPreferentialStrategy 為固定折扣策略,在訂單總金額基礎上進行固定折扣。

    2.4 基礎設施(第三方接口)隔離

    領域概念本身屬于領域模型,但具體實現依賴于基礎設施。

    此時,我們需要將領域概念建模成領域服務,并將其置于模型層。將依賴于基礎設施的具體實現類,放置于基礎設施層。

    比較典型的例子便是密碼加密,加密服務應該位于領域中,但具體的實現依賴基礎設施,應該放在基礎設施層。

    public interface PasswordEncoder { String encode(CharSequence rawPassword); boolean matches(CharSequence rawPassword, String encodedPassword);}

    PasswordEncoder 提供密碼加密和密碼驗證功能。

    public class BCryptPasswordEncoder implements PasswordEncoder { private Pattern BCRYPT_PATTERN = Pattern .compile("\\A\\$2a?\\$\\d\\d\\$[./0-9A-Za-z]{53}"); private final Log logger = LogFactory.getLog(getClass()); private final int strength; private final SecureRandom random; public BCryptPasswordEncoder() { this(-1); } public BCryptPasswordEncoder(int strength) { this(strength, null); } public BCryptPasswordEncoder(int strength, SecureRandom random) { if (strength != -1 && (strength < BCrypt.MIN_LOG_ROUNDS || strength > BCrypt.MAX_LOG_ROUNDS)) { throw new IllegalArgumentException("Bad strength"); } this.strength = strength; this.random = random; } public String encode(CharSequence rawPassword) { String salt; if (strength > 0) { if (random != null) { salt = BCrypt.gensalt(strength, random); } else { salt = BCrypt.gensalt(strength); } } else { salt = BCrypt.gensalt(); } return BCrypt.hashpw(rawPassword.toString(), salt); } public boolean matches(CharSequence rawPassword, String encodedPassword) { if (encodedPassword == null || encodedPassword.length() == 0) { logger.warn("Empty encoded password"); return false; } if (!BCRYPT_PATTERN.matcher(encodedPassword).matches()) { logger.warn("Encoded password does not look like BCrypt"); return false; } return BCrypt.checkpw(rawPassword.toString(), encodedPassword); }}

    BCryptPasswordEncoder 提供基于 BCrypt 的實現。

    public class SCryptPasswordEncoder implements PasswordEncoder { private final Log logger = LogFactory.getLog(getClass()); private final int cpuCost; private final int memoryCost; private final int parallelization; private final int keyLength; private final BytesKeyGenerator saltGenerator; public SCryptPasswordEncoder() { this(16384, 8, 1, 32, 64); } public SCryptPasswordEncoder(int cpuCost, int memoryCost, int parallelization, int keyLength, int saltLength) { if (cpuCost <= 1) { throw new IllegalArgumentException("Cpu cost parameter must be > 1."); } if (memoryCost == 1 && cpuCost > 65536) { throw new IllegalArgumentException("Cpu cost parameter must be > 1 and < 65536."); } if (memoryCost < 1) { throw new IllegalArgumentException("Memory cost must be >= 1."); } int maxParallel = Integer.MAX_VALUE / (128 * memoryCost * 8); if (parallelization < 1 || parallelization > maxParallel) { throw new IllegalArgumentException("Parallelisation parameter p must be >= 1 and <= " + maxParallel + " (based on block size r of " + memoryCost + ")"); } if (keyLength < 1 || keyLength > Integer.MAX_VALUE) { throw new IllegalArgumentException("Key length must be >= 1 and <= " + Integer.MAX_VALUE); } if (saltLength < 1 || saltLength > Integer.MAX_VALUE) { throw new IllegalArgumentException("Salt length must be >= 1 and <= " + Integer.MAX_VALUE); } this.cpuCost = cpuCost; this.memoryCost = memoryCost; this.parallelization = parallelization; this.keyLength = keyLength; this.saltGenerator = KeyGenerators.secureRandom(saltLength); } public String encode(CharSequence rawPassword) { return digest(rawPassword, saltGenerator.generateKey()); } public boolean matches(CharSequence rawPassword, String encodedPassword) { if (encodedPassword == null || encodedPassword.length() < keyLength) { logger.warn("Empty encoded password"); return false; } return decodeAndCheckMatches(rawPassword, encodedPassword); } private boolean decodeAndCheckMatches(CharSequence rawPassword, String encodedPassword) { String[] parts = encodedPassword.split("\\$"); if (parts.length != 4) { return false; } long params = Long.parseLong(parts[1], 16); byte[] salt = decodePart(parts[2]); byte[] derived = decodePart(parts[3]); int cpuCost = (int) Math.pow(2, params >> 16 & 0xffff); int memoryCost = (int) params >> 8 & 0xff; int parallelization = (int) params & 0xff; byte[] generated = SCrypt.generate(Utf8.encode(rawPassword), salt, cpuCost, memoryCost, parallelization, keyLength); if (derived.length != generated.length) { return false; } int result = 0; for (int i = 0; i < derived.length; i++) { result |= derived[i] ^ generated[i]; } return result == 0; } private String digest(CharSequence rawPassword, byte[] salt) { byte[] derived = SCrypt.generate(Utf8.encode(rawPassword), salt, cpuCost, memoryCost, parallelization, keyLength); String params = Long .toString(((int) (Math.log(cpuCost) / Math.log(2)) << 16L) | memoryCost << 8 | parallelization, 16); StringBuilder sb = new StringBuilder((salt.length + derived.length) * 2); sb.append("$").append(params).append('$'); sb.append(encodePart(salt)).append('$'); sb.append(encodePart(derived)); return sb.toString(); } private byte[] decodePart(String part) { return Base64.getDecoder().decode(Utf8.encode(part)); } private String encodePart(byte[] part) { return Utf8.decode(Base64.getEncoder().encode(part)); }}

    SCryptPasswordEncoder 提供基于 SCrypt 的實現。

    2.5 模型概念轉化

    在限界上下文集成時,經常需要對上游限界上下文中的概念進行轉換,以避免概念的混淆。

    例如,在用戶成功激活后,自動為其創建名片。

    在用戶激活后,會從 User 限界上下文中發出 UserActivatedEvent 事件,Card 上下文監聽事件,并將用戶上下文內的概念轉為為名片上下文中的概念。

    @Valuepublic class UserActivatedEvent extends AbstractDomainEvent { private final String name; private final Long userId; public UserActivatedEvent(String name, Long userId) { this.name = name; this.userId = userId; }}

    UserActivatedEvent 是用戶上下文,在用戶激活后向外發布的領域事件。

    @Servicepublic class UserEventHandlers { @EventListener public void handle(UserActivatedEvent event){ Card card = new Card(); card.setUserId(event.getUserId()); card.setName(event.getName()); }}

    UserEventHandlers 在收到 UserActivatedEvent 事件后,將來自用戶上下文中的概念轉化為自己上下文中的概念 Card。

    2.6 在服務層中使用領域服務

    領域服務可以在應用服務中使用,已完成特定的業務規則。

    最常用的場景為,應用服務從存儲庫中獲取相關實體并將它們傳遞到領域服務中。

    public class OrderApplication { @Autowired private OrderRepository orderRepository; @Autowired private OrderAmountCalculator orderAmountCalculator; @Autowired private Map<String, PreferentialStrategy> strategyMap; public Long calculateOrderTotalPrice(Long orderId, String strategyName){ Order order = this.orderRepository.getById(orderId).orElseThrow(()->new AggregateNotFountException(String.valueOf(orderId))); PreferentialStrategy strategy = this.strategyMap.get(strategyName); Preconditions.checkArgument(strategy != null); return this.orderAmountCalculator.calculate(order, strategy); }}

    OrderApplication 首先通過 OrderRepository 獲取 Order 信息,然后獲取對應的 PreferentialStrategy,最后調用 OrderAmountCalculator 完成金額計算。

    在服務層使用,領域服務和其他領域對象可以根據需求很容易的拼接在一起。

    當然,我們也可以將領域服務作為業務方法的參數進行傳遞。

    public class UserApplication extends AbstractApplication { @Autowired private PasswordEncoder passwordEncoder; @Autowired private UserRepository userRepository; public void updatePassword(Long userId, String password){ updaterFor(this.userRepository) .id(userId) .update(user -> user.updatePassword(password, this.passwordEncoder)) .call(); } public boolean checkPassword(Long userId, String password){ return this.userRepository.getById(userId) .orElseThrow(()-> new AggregateNotFountException(String.valueOf(userId))) .checkPassword(password, this.passwordEncoder); }}

    UserApplication 中的 updatePasswordcheckPassword 在流程中都需要使用領域服務 PasswordEncoder,我們可以通過參數將 UserApplication 所保存的 PasswordEncoder 傳入到業務方法中。

    2.7 在領域層中使用領域服務

    由于實體和領域服務擁有不同的生命周期,在實體依賴領域服務時,會變的非常棘手。

    有時,一個實體需要領域服務來執行操作,以避免在應用服務中的拼接。此時,我們需要解決的核心問題是,在實體中如何獲取服務的引用。通常情況下,有以下幾種方式。

    2.7.1 手工鏈接

    如果一個實體依賴領域服務,同時我們自己在管理對象的構建,那么最簡單的方式便是將相關服務通過構造函數傳遞進去。

    還是以 PasswordEncoder 為例。

    @Datapublic class User extends JpaAggregate { private final PasswordEncoder passwordEncoder; private String password; public User(PasswordEncoder passwordEncoder) { this.passwordEncoder = passwordEncoder; } public void updatePassword(String pwd){ setPassword(passwordEncoder.encode(pwd)); } public boolean checkPassword(String pwd){ return passwordEncoder.matches(pwd, getPassword()); }}

    如果,我們完全手工維護 User 的創建,可以在構造函數中傳入領域服務。

    當然,如果實體是通過 ORM 框架獲取的,通過構造函數傳遞將變得比較棘手,我們可以為其添加一個 init 方法,來完成服務的注入。

    @Datapublic class User extends JpaAggregate { private PasswordEncoder passwordEncoder; private String password; public void init(PasswordEncoder passwordEncoder){ this.setPasswordEncoder(passwordEncoder); } public User(PasswordEncoder passwordEncoder) { this.passwordEncoder = passwordEncoder; } public void updatePassword(String pwd){ setPassword(passwordEncoder.encode(pwd)); } public boolean checkPassword(String pwd){ return passwordEncoder.matches(pwd, getPassword()); }}

    通過 ORM 框架獲取 User 后,調用 init 方法設置 PasswordEncoder。

    2.7.2 依賴注入

    如果在使用 Spring 等 IOC 框架,我們可以在從 ORM 框架中獲取實體后,使用依賴注入完成領域服務的注入。

    @Datapublic class User extends JpaAggregate { @Autowired private PasswordEncoder passwordEncoder; private String password; public void updatePassword(String pwd){ setPassword(passwordEncoder.encode(pwd)); } public boolean checkPassword(String pwd){ return passwordEncoder.matches(pwd, getPassword()); }}

    User 直接使用 @Autowired 注入領域服務。

    public class UserApplication extends AbstractApplication { @Autowired private AutowireCapableBeanFactory beanFactory; @Autowired private UserRepository userRepository; public void updatePassword(Long userId, String password){ User user = this.userRepository.getById(userId).orElseThrow(() -> new AggregateNotFountException(String.valueOf(userId))); this.beanFactory.autowireBean(user); user.updatePassword(password); this.userRepository.save(user); } public boolean checkPassword(Long userId, String password){ User user = this.userRepository.getById(userId).orElseThrow(() -> new AggregateNotFountException(String.valueOf(userId))); this.beanFactory.autowireBean(user); return user.checkPassword(password); }}

    UserApplication 在獲取 User 對象后,首先調用 autowireBean 完成 User 對象的依賴綁定,然后在進行業務處理。

    2.7.3 服務定位器

    有時在實體中添加字段以維持領域服務引用,會使的實體變得臃腫。此時,我們可以通過服務定位器進行領域服務的查找。

    一般情況下,服務定位器會提供一組靜態方法,以方便的獲取其他服務。

    @Componentpublic class ServiceLocator implements ApplicationContextAware { private static ApplicationContext APPLICATION; @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { APPLICATION = applicationContext; } public static <T> T getService(Class<T> service){ return APPLICATION.getBean(service); }}

    ServiceLocator 實現 ApplicationContextAware 接口,通過 Spring 回調將 ApplicationContext 綁定到靜態字段 APPLICATION 上。getService 方法直接使用 ApplicationContext 獲取領域服務。

    @Datapublic class User extends JpaAggregate { private String password; public void updatePassword(String pwd){ setPassword(ServiceLocator.getService(PasswordEncoder.class).encode(pwd)); } public boolean checkPassword(String pwd){ return ServiceLocator.getService(PasswordEncoder.class).matches(pwd, getPassword()); }}

    User 對象直接使用靜態方法獲取領域服務。

    以上模式重點解決如果將領域服務注入到實體中,而 領域事件 模式從相反方向努力,解決如何阻止注入的發生。

    2.7.4 領域事件解耦

    一種完全避免將領域服務注入到實體中的模式是領域事件。

    當重要的操作發生時,實體可以發布一個領域事件,注冊了該事件的訂閱器將處理該事件。此時,領域服務駐留在消息的訂閱方內,而不是駐留在實體中。

    比較常見的實例是用戶通知,例如,在用戶激活后,為用戶發送一個短信通知。

    @Datapublic class User extends JpaAggregate { private UserStatus status; private String name; private String password; public void activate(){ setStatus(UserStatus.ACTIVATED); registerEvent(new UserActivatedEvent(getName(), getId())); }}

    首先,User 在成功 activate 后,將自動注冊 UserActivatedEvent 事件。

    public class UserApplication extends AbstractApplication { @Autowired private PasswordEncoder passwordEncoder; @Autowired private UserRepository userRepository; private DomainEventBus domainEventBus = new DefaultDomainEventBus(); @PostConstruct public void init(){ this.domainEventBus.register(UserActivatedEvent.class, event -> { sendSMSNotice(event.getUserId(), event.getName()); }); } private void sendSMSNotice(Long userId, String name) { // 發送短信通知 } public void activate(Long userId){ updaterFor(this.userRepository) .publishBy(domainEventBus) .id(userId) .update(user -> user.activate()) .call(); }}

    UserApplication 通過 Spring 的回調方法 init,訂閱 UserActivatedEvent 事件,在事件觸發后執行發短信邏輯。activate 方法在成功更新 User 后,將對緩存的事件進行發布。

    3. 領域服務建模模式

    3.1 獨立接口是否有必要

    很多情況下,獨立接口時沒有必要的。我們只需創建一個實現類即可,其命名與領域服務相同(名稱來自通用語言)。

    但在下面情況下,獨立接口時有必要的(獨立接口對解耦是有好處的):

    • 存在多個實現。
    • 領域服務的實現依賴基礎框架的支持。
    • 測試環節需要 mock 對象。

    3.2 避免靜態方法

    對于行為建模,很多人第一反應是使用靜態方法。但,領域服務比靜態方法存在更多的好處。

    領域服務比靜態方法要好的多:

  • 通過多態,適配多個實現,同時可以使用模板方法模式,對結構進行優化;
  • 通過依賴注入,獲取其他資源;
  • 類名往往比方法名更能表達領域概念。
  • 從表現力角度出發,類的表現力大于方法,方法的表現力大于代碼。

    3.3 優先使用領域事件進行解耦

    領域事件是最優雅的解耦方案,基本上沒有之一。我們將在領域事件中進行詳解。

    3.4 策略模式

    當領域服務存在多個實現時,天然形成了策略模式。

    當領域服務存在多個實現時,可以根據上下文信息,動態選擇具體的實現,以增加系統的靈活性。

    詳見 PreferentialStrategy 實例。

    4. 小結

    • 有時,行為不屬于實體或值對象,但它是一個重要的領域概念,這就暗示我們需要使用領域服務模式。
    • 領域服務代表領域概念,它是對通用語言的一種建模。
    • 領域服務主要使用實體或值對象組成無狀態的操作。
    • 領域服務位于領域模型中,對于依賴基礎設施的領域服務,其接口定義位于領域模型中。
    • 過多的領域服務會導致貧血模型,使之與問題域無法很好的配合。
    • 過少的領域服務會導致將不正確的行為添加到實體或值對象上,造成概念的混淆。
    • 當實體依賴領域服務時,可以使用手工注入、依賴注入和領域事件等多種方式進行處理。

    本文首發于 GitChat,未經授權不得轉載,轉載需與 GitChat 聯系。

    閱讀全文: http://gitbook.cn/gitchat/activity/5d551ee2fd2738650e9dd675

    您還可以下載 CSDN 旗下精品原創內容社區 GitChat App , GitChat 專享技術內容哦。

    總結

    以上是生活随笔為你收集整理的领域驱动设计战术模式:领域服务的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    国产精品久久久久一区二区 | 在线视频久久 | 日本性视频 | 亚洲高清在线精品 | 日韩av线观看 | 在线看污网站 | 激情综合五月天 | 天天狠狠| 不卡的一区二区三区 | 久久久久久久久福利 | 天天舔天天搞 | 色久网| 麻豆视频免费观看 | 国产精品丝袜久久久久久久不卡 | 亚洲欧洲精品一区 | 另类老妇性bbwbbw高清 | 一区二区三区免费在线观看 | 91麻豆国产福利在线观看 | 手机av电影在线观看 | 日本爱爱免费视频 | 国产亚洲精品久久久久久电影 | 亚洲电影网站 | 又黄又刺激又爽的视频 | 在线视频你懂得 | 高清久久久久久 | 中文字幕日韩一区二区三区不卡 | 激情五月亚洲 | 97成人在线视频 | 激情综合中文娱乐网 | 国产精品99免视看9 国产精品毛片一区视频 | 中文字幕在线不卡国产视频 | 91免费视频网站在线观看 | 成人国产精品免费 | 大胆欧美gogo免费视频一二区 | 日韩免费中文字幕 | 亚洲日韩精品欧美一区二区 | 亚洲精品美女免费 | 久久精品这里热有精品 | 97在线观看免费视频 | 久久九九九九 | 五月综合激情婷婷 | 在线视频99| 亚洲精品午夜久久久久久久 | 久久精品一二三区白丝高潮 | 久久久国产网站 | 蜜臀av网站 | 99精品一级欧美片免费播放 | 久久久久国产精品免费 | 日韩二区在线观看 | 91av在线看 | 日韩精品一区二区三区丰满 | 又黄又爽的免费高潮视频 | 国产免费观看视频 | www.五月天激情 | 精品国产一二三 | 婷婷视频在线 | 成人片在线播放 | 中文字幕一区二区三区乱码在线 | 国产无限资源在线观看 | 噜噜色官网 | 成人小电影在线看 | 一区二区三区免费在线播放 | 久久久久美女 | 久久艹艹 | 亚洲综合射 | 97在线观看免费观看 | 国产精品一区二区三区久久 | 亚洲激情小视频 | 精品美女在线视频 | 天天看天天干 | 久久激情久久 | 国产黄色精品在线 | 亚洲精品1区2区3区 超碰成人网 | 亚洲在线激情 | 一级黄色免费 | 精品亚洲视频在线 | 五月开心激情 | 毛片视频网址 | 亚洲老妇xxxxxx | 久久深夜福利免费观看 | 9在线观看免费 | 免费看国产视频 | av线上看 | 最近中文字幕免费视频 | 亚洲资源在线网 | 狠狠干 狠狠操 | 这里有精品在线视频 | 国产精品久久久久婷婷二区次 | 国产精品嫩草影院123 | 8x成人在线 | 免费视频在线观看网站 | 国产黄色片免费看 | 久草在线高清视频 | 亚洲精品综合欧美二区变态 | 九九免费在线看完整版 | 精品91视频| 激情av一区二区 | 国产亚洲一区二区在线观看 | 日韩精品一区二区三区电影 | 成人啊 v| 一区二区三区免费网站 | 在线免费观看视频 | 91麻豆精品国产自产 | 在线播放亚洲激情 | 97在线精品国自产拍中文 | 免费看黄20分钟 | 午夜三级在线 | 精品国产一区二区三区免费 | 999国产 | 久久66热这里只有精品 | 奇米导航| 成年人三级网站 | 久久久久免费观看 | 国产精品麻豆三级一区视频 | 欧美怡红院 | 色久av| 亚洲码国产日韩欧美高潮在线播放 | 伊人色综合久久天天网 | 一区二区三区高清在线观看 | 超碰在线94| 美女视频a美女大全免费下载蜜臀 | 国产精品美女 | 日韩欧在线 | 欧美日韩在线观看一区二区 | 国产视频在线观看一区 | 亚洲精品久久久蜜桃 | 一级成人免费视频 | 婷婷丁香激情五月 | 成人试看120秒 | 美女av在线免费 | 夜夜躁天天躁很躁波 | 免费看的视频 | 中文字幕在线观看不卡 | 欧美性受极品xxxx喷水 | 中文字幕日韩国产 | 免费精品在线视频 | 区一区二在线 | 在线视频你懂 | 午夜成人影视 | 日韩中文字幕免费看 | 日韩久久在线 | 黄色免费大片 | a级片网站 | 亚洲最新av在线网址 | 久久影院亚洲 | 在线日韩av | 亚洲国产视频在线 | 黄网站app在线观看免费视频 | 国产精品久久久久久久久久久久久 | 91夫妻自拍 | 欧美性做爰猛烈叫床潮 | 香蕉视频亚洲 | 久久成人亚洲欧美电影 | 国产在线2020| 操一草 | 97超视频在线观看 | 亚洲天堂va | 国产成人一区二区三区影院在线 | 麻豆小视频在线观看 | 国产在线精品一区二区 | 久久av免费观看 | 国产精品区在线观看 | 特级西西444www高清大视频 | 日本久久91| 亚洲日韩中文字幕 | 日韩在线高清 | 欧美成人播放 | 欧美日韩国产一二 | 精品主播网红福利资源观看 | 免费看成人av | 日韩中文字幕视频在线 | 一本一道久久a久久精品 | 黄色小说免费观看 | 91porny九色91啦中文 | 欧美做受69 | 欧美日韩视频免费 | 99久久国产免费,99久久国产免费大片 | 欧美在线视频不卡 | 五月天综合网站 | 久久成年人网站 | 国产精品videossex国产高清 | 十八岁免进欧美 | 丁香花在线视频观看免费 | 六月丁香六月婷婷 | 亚洲视频999 | 国产精品免费一区二区三区在线观看 | 久久精品一区 | 天天干天天操天天做 | 国产福利一区在线观看 | 伊人色综合网 | 99精品视频精品精品视频 | 男女视频国产 | 人人爽人人爽人人爽 | 国产福利小视频在线 | 国产一区免费看 | 黄色软件视频大全免费下载 | 久久福利电影 | 免费在线观看不卡av | 欧美999| 亚洲国产精品小视频 | 国产999精品久久久影片官网 | 国产手机在线精品 | 国产精品久久久久久久久久新婚 | 日韩v欧美v日本v亚洲v国产v | 综合久色| 在线超碰av | 999日韩 | 天天综合导航 | 五月婷婷亚洲 | 91av播放| 波多在线视频 | 91专区在线观看 | 中文字幕a∨在线乱码免费看 | 国产在线观看中文字幕 | 免费看黄在线看 | 久久久久欧美精品 | 久久99亚洲网美利坚合众国 | 东方av免费在线观看 | 国产精品av在线免费观看 | 国产午夜精品一区二区三区 | 国产在线精品区 | 在线欧美日韩 | www五月婷婷 | 日韩视频免费看 | 在线av资源 | 亚洲精品97 | 亚洲综合激情小说 | 久久网站免费 | 亚洲区视频在线观看 | 欧美日韩中文视频 | 在线国产专区 | 中文字幕亚洲在线观看 | 久久国内精品99久久6app | 美腿丝袜一区二区三区 | 国产精品每日更新 | 天天艹天天操 | 中文av在线免费观看 | 国产成人黄色av | 亚洲综合色激情五月 | 国产精品免费麻豆入口 | 日韩久久久久久久久久久久 | 精品99视频 | 伊人干综合 | 99资源网 | 福利一区在线 | 亚洲视频 视频在线 | 国产一区视频导航 | 日韩精品一区二区三区中文字幕 | 精品国产一区二区三区久久久蜜月 | 在线成人一区 | 在线免费中文字幕 | 国产精品a久久久久 | 国产精品免费人成网站 | 日韩区欠美精品av视频 | 伊人久久av| 99久热在线精品视频成人一区 | 国产不卡网站 | 成片视频免费观看 | 国产在线精品福利 | 999久久久 | 九九久久影院 | 国产美女视频网站 | 国内亚洲精品 | 69中文字幕 | 日韩视频免费播放 | 91在线免费观看网站 | 美女黄频在线观看 | 免费美女久久99 | 日韩午夜高清 | 日韩免费av片 | 国产精久久久久久久 | 美女视频a美女大全免费下载蜜臀 | 天天狠狠 | 国产成人精品一区二区三区在线 | 精品免费久久久久 | 91成人天堂久久成人 | 99视频在线免费 | 不卡av免费在线观看 | 婷婷色在线 | 亚洲污视频 | 99综合电影在线视频 | 国产中文字幕91 | 2021国产在线 | 日韩亚洲精品电影 | 国产精品嫩草在线 | 91精品视频免费 | 亚洲国产三级在线观看 | 最新国产精品拍自在线播放 | 综合色狠狠| 国产精品国产三级国产不产一地 | 特级毛片在线 | 99在线热播精品免费99热 | 在线播放 日韩专区 | 国产专区一 | 超碰免费公开 | 一区二区三区久久 | 欧产日产国产69 | 99热精品久久 | 欧美日韩在线观看一区 | 中文在线8资源库 | 96久久欧美麻豆网站 | 免费在线色 | 国产91欧美 | 国产明星视频三级a三级点| 九九精品在线观看 | 九草在线视频 | 欧美日韩国产精品久久 | 成人免费观看网址 | 日韩二三区 | 精品亚洲欧美无人区乱码 | 中文字幕影视 | 久草在线视频免费资源观看 | 日韩在线网址 | 日韩大片免费观看 | 欧美孕妇视频 | 国产高清视频在线免费观看 | 福利视频网站 | 五月婷婷综合久久 | 国产精品国产三级国产 | 97国产情侣爱久久免费观看 | 亚洲欧美在线综合 | 久久毛片视频 | 成年人看片网站 | 天天综合狠狠精品 | 在线视频成人 | 日韩欧美精品在线 | 欧美激情综合色综合啪啪五月 | 国产成人精品av在线观 | 久久99免费视频 | 婷婷在线看 | 免费av片在线 | 97色综合| 高清精品在线 | 色99在线 | 奇米网444 | 97电影在线观看 | 国产视频一 | 日韩成人黄色av | 免费三及片 | 91看片在线观看 | 五月开心婷婷网 | 亚洲国产成人在线 | 欧美亚洲国产一卡 | 中文字幕在线第一页 | 色婷婷a | 亚州日韩中文字幕 | 日日干夜夜干 | 伊人色综合久久天天 | 国产日韩视频在线观看 | 2019中文最近的2019中文在线 | 日韩欧美综合在线视频 | 99国产一区二区三精品乱码 | 国产福利一区二区在线 | 久久一久久| 精品视频在线免费观看 | 一级理论片在线观看 | 六月丁香激情网 | 激情小说久久 | 激情黄色一级片 | 日韩国产高清在线 | 日韩激情影院 | 日韩特级片 | 日韩成人黄色 | 日本性生活一级片 | 天天av在线播放 | 999久久久精品视频 日韩高清www | 国产大片黄色 | 亚洲精品网址在线观看 | 国产成人精品一区二区三区网站观看 | 97精品久久| www.色就是色 | 日韩精品五月天 | 成人在线免费av | 999久久久久久| 国产高清视频在线播放一区 | 国产精品一区二区白浆 | 九色精品免费永久在线 | 中文字幕九九 | 丁香九月婷婷 | 在线视频 你懂得 | a级国产乱理伦片在线观看 亚洲3级 | 狠狠操操网 | 国内精品久久久久久中文字幕 | av 在线观看 | 久久久久久国产精品999 | 婷婷五综合| 国产一级高清视频 | 日日夜操| 免费福利片2019潦草影视午夜 | 亚洲国产精品日韩 | 国产精品久久视频 | а天堂中文最新一区二区三区 | 欧美激情xxxx性bbbb | 国产成人在线精品 | 久久99精品久久久久婷婷 | 欧美成人一区二区 | 亚洲乱码国产乱码精品天美传媒 | 91精品久久久久 | 久热av | 国内免费久久久久久久久久久 | 免费福利在线 | 久久99热国产 | 中文字幕永久 | 久久五月天婷婷 | 中午字幕在线 | 欧美日韩性生活 | 免费又黄又爽 | 伊人网av | 日日操夜夜操狠狠操 | 久久视频精品在线 | 免费精品视频在线 | 久久国产a| 手机av在线网站 | 国产白浆在线观看 | 亚洲一区精品二人人爽久久 | 人人搞人人爽 | 久久老司机精品视频 | 久久都是精品 | 国产黄色电影 | 久久免费中文视频 | 99精品视频精品精品视频 | 精品久久久网 | 91视频免费看片 | 中文字幕在线看视频国产中文版 | 中文字幕日韩av | 亚洲精品国产精品国自产观看浪潮 | 国产精品久久久久久久av电影 | 国产亚洲精品精品精品 | 7777精品伊人久久久大香线蕉 | 福利视频一区二区 | 免费观看性生交大片3 | 成人久久久久久久久久 | 国产精品99蜜臀久久不卡二区 | 久久久久久久18 | 亚洲视频免费在线看 | 激情欧美日韩一区二区 | 夜夜操狠狠操 | 欧美天堂视频在线 | 天天舔天天射天天操 | 日本中文字幕在线看 | 人人插人人费 | 亚洲综合欧美激情 | 在线观看免费一区 | 9幺看片 | 国产精品久久久久久999 | 欧美性脚交 | 亚洲精品国产精品乱码在线观看 | 欧美日韩国产高清视频 | 亚洲aaa毛片 | 中文字幕第一页在线视频 | 欧美精品九九99久久 | 99精品在这里 | 欧美三级高清 | 天天操天天拍 | 精品亚洲免a | 91免费观看 | 欧美精品视 | 国产97色 | 亚洲激情影院 | 中文字幕色网站 | 免费一级特黄毛大片 | 99久久日韩精品视频免费在线观看 | 日韩在线视频一区二区三区 | 99中文视频在线 | 亚洲国产三级 | 99麻豆视频 | 天天玩天天干天天操 | 国产高清日韩欧美 | 高潮久久久久久久久 | 综合色中文 | 免费观看的av网站 | 色婷婷综合视频在线观看 | 在线视频日韩精品 | 超碰人人在 | zzijzzij亚洲成熟少妇 | 欧美日韩中文字幕在线视频 | 免费特级黄毛片 | 911国产精品| 日韩免费网站 | 中文字幕在线日本 | 亚洲欧洲精品一区二区精品久久久 | 久久99国产一区二区三区 | 在线观看成人毛片 | 91麻豆精品国产91 | 国产精品99久久久久久有的能看 | 麻豆一二三精选视频 | 超碰人人射 | 日韩电影精品一区 | 免费观看午夜视频 | 中文字幕日韩有码 | 超碰大片 | 91免费的视频在线播放 | 热re99久久精品国产66热 | 中文字幕国产视频 | 亚洲欧洲国产视频 | 亚洲日本在线视频观看 | 手机看片 | 丁香色婷| 日韩一区精品 | 久久久精品综合 | 午夜久久久久久久久久影院 | 在线视频观看国产 | 91丨九色丨蝌蚪丨对白 | 人人爽人人爽人人爽人人爽 | 久久久久国产一区二区 | 免费h视频 | 欧美成人免费在线 | 热精品 | 成人在线播放免费观看 | 欧美aaa视频| 精品久久一区二区 | 天天夜操 | 日日干视频 | 欧美日韩高清国产 | 九九视频这里只有精品 | 99热精品国产 | 99久久精品一区二区成人 | 亚洲成人资源 | 日韩成人免费在线观看 | 久久dvd | 亚洲一区日韩精品 | 麻豆 91 在线 | 国产精品一区免费看8c0m | 久久精美视频 | 精品一区二区综合 | 9免费视频 | 国产精品 日韩 欧美 | 久久手机免费观看 | 日本黄色大片免费 | 日本公妇在线观看高清 | 免费成人在线观看 | 91手机在线看片 | 国产亚洲情侣一区二区无 | 一区二区三区视频在线 | 欧美一区二区三区在线看 | 奇米网网址| 免费情趣视频 | 久久精品国产精品亚洲精品 | 成人影视免费看 | 成年人在线免费看视频 | 黄色免费在线看 | 国产精品不卡 | 久久免费中文视频 | av三级在线播放 | 久久激情视频免费观看 | 日本最新一区二区三区 | 亚洲在线a | 91精品亚洲影视在线观看 | 国产精品久久久久久久久软件 | 久久影院中文字幕 | 黄色a大片 | 欧美亚洲一区二区在线 | 色诱亚洲精品久久久久久 | 中文字幕视频在线播放 | 精品极品在线 | 夜夜嗨av色一区二区不卡 | 欧美日韩精品区 | 天天插综合网 | 国产日韩在线一区 | 在线高清av | 超碰午夜 | 国产精品久久久影视 | 日韩啪啪小视频 | 成年人免费看av | 久久综合中文色婷婷 | 黄色成人影视 | 亚洲国产精品免费 | 国产精品中文久久久久久久 | 插插插色综合 | 麻豆一二| 亚洲国产免费网站 | 福利区在线观看 | 久久夜色精品国产欧美一区麻豆 | 国产大陆亚洲精品国产 | av动图| 免费99视频| 中文av在线播放 | 久久艹中文字幕 | 国产精品欧美一区二区 | 91在线视频一区 | 婷婷在线免费观看 | 亚洲视频 视频在线 | 久久精品一区二区国产 | 免费国产黄线在线观看视频 | 中文在线免费视频 | 久久国语| 天天操夜 | 国产一区二区三区久久久 | 91九色视频在线播放 | 免费高清av在线看 | 在线免费观看亚洲视频 | 国产精品久久久久久久av电影 | 国产激情久久久 | 午夜精品视频福利 | 97自拍超碰| 久久久久久国产精品久久 | 亚洲国产mv| 欧美另类高潮 | 国产三级在线播放 | 一区二区三区日韩在线 | 亚洲精品乱码久久久久久蜜桃动漫 | 久久免费的精品国产v∧ | 久久免费视频在线观看6 | 久草电影免费在线观看 | 欧美日韩一区三区 | 国产午夜三级一区二区三 | 久久人人爽人人爽人人片av软件 | 一本一本久久a久久精品牛牛影视 | 成人免费网站视频 | 天天干天天射天天爽 | 婷婷免费在线视频 | 日韩欧美一级二级 | 2018亚洲男人天堂 | 久久国产精品免费一区二区三区 | 麻豆激情电影 | 国产精品18久久久久久久 | 四虎成人网 | 99国产情侣在线播放 | 国产精品va最新国产精品视频 | 在线免费观看视频 | 奇米影视8888在线观看大全免费 | 国产精品wwwwww | 色网av| 国产成人黄色片 | 夜夜夜夜夜夜操 | 日韩理论电影在线 | 国产偷在线 | 3d黄动漫免费看 | 国内小视频在线观看 | av在线电影网站 | 日日爱影视 | zzijzzij亚洲成熟少妇 | 日本性生活一级片 | www.亚洲视频 | 亚洲精品99| 三级黄色大片在线观看 | 国产91aaa| 午夜精品成人一区二区三区 | www.com久久久 | 激情小说 五月 | 国产偷v国产偷∨精品视频 在线草 | 在线影院av | 日韩中文免费视频 | 精品国产日本 | 中文字幕av在线 | 日韩免费 | 麻豆精品传媒视频 | 婷婷六月天综合 | 国产精品一区二区免费 | 日韩欧美一区二区三区在线观看 | 九九热在线精品 | 国产粉嫩在线观看 | 欧美a级免费视频 | 国产在线日本 | 精品国产一区二区三区久久久久久 | 91香蕉国产 | 在线观看成人福利 | 天天透天天插 | 国产 日韩 欧美 在线 | 五月导航 | 亚洲天堂网站视频 | 永久免费在线 | 超碰国产人人 | 国产二区视频在线 | 尤物九九久久国产精品的分类 | 日本黄色免费电影网站 | 美女视频黄在线 | 亚洲开心激情 | 免费成人黄色片 | 久久草 | 久久色在线观看 | 日本黄色免费电影网站 | 五月天激情在线 | 久久一区二区三区日韩 | 久久国产网站 | 精品一区av| 中文字幕亚洲欧美日韩 | 久久超 | 精品国产一区二区久久 | 国产精品2018 | 91九色国产视频 | 国产午夜三级一区二区三桃花影视 | 视频二区在线视频 | av高清免费在线 | 国产精品一区二区免费 | 91在线视频一区 | 天天射天天干天天操 | 亚洲区视频在线观看 | 国产精品永久在线观看 | 成人免费看电影 | 亚洲精品视频在线看 | 九九亚洲视频 | 婷婷色网址 | 亚洲日本韩国一区二区 | 国产生活一级片 | 日本h视频在线观看 | 深爱激情开心 | 综合精品久久 | 久久欧美在线电影 | 国产精品欧美激情在线观看 | 91chinese在线 | 天天干天天天天 | 欧美另类美少妇69xxxx | 色视频国产直接看 | 免费99精品国产自在在线 | 成人久久久久久久久久 | 日韩成人欧美 | 日本久久综合网 | 黄色三级视频片 | 中文字幕日韩无 | 国产在线观看你懂得 | 色婷婷免费 | 久久国语 | 亚洲色视频 | 亚洲日日日 | 国产精品人人做人人爽人人添 | 亚洲精品看片 | 国产一区二三区好的 | 国产精品免费观看在线 | www色,com | 亚洲欧美在线综合 | 精品国产免费人成在线观看 | 欧美孕妇视频 | 就要干b| av软件在线观看 | 国产精品一区二区麻豆 | 天天综合狠狠精品 | 91高清在线看 | 久草免费在线视频观看 | 天天射天天干天天 | 亚洲免费av在线 | 欧美日韩在线免费观看 | 免费在线观看亚洲视频 | 日韩电影精品一区 | 在线视频 成人 | 2018亚洲男人天堂 | av免费看在线| 91亚洲精品久久久久图片蜜桃 | 国产美女免费观看 | 久久综合免费 | 九色91在线视频 | 2022久久国产露脸精品国产 | 国产高清久久久 | 婷婷六月天丁香 | 五月天综合在线 | 成在人线av | 性色av免费观看 | 亚洲h视频在线 | 国产精品久久久久久久久久妇女 | 伊人春色电影网 | 少妇视频在线播放 | 久久在现| 免费看片色 | av成人动漫在线观看 | 成人一级在线 | 久久久久久久久精 | 日本精品久久 | 日日摸日日 | 欧美久久久久久久久久久久 | 成年人免费看片 | 91麻豆国产福利在线观看 | 国产免费三级在线观看 | 九九免费精品视频在线观看 | 2021av在线 | 在线影视 一区 二区 三区 | 九色最新网址 | 综合天堂av久久久久久久 | www.人人干 | 国产手机视频 | 亚洲成a人片在线www | 国产91成人 | 日韩在线不卡 | 麻豆va一区二区三区久久浪 | 欧美最爽乱淫视频播放 | 国产91精品看黄网站在线观看动漫 | 一区二区三区四区五区在线 | 国产不卡在线视频 | 久久艹国产 | 粉嫩aⅴ一区二区三区 | 久久久www| 亚洲伊人成综合网 | 91在线公开视频 | 在线观看黄色小视频 | 久久理论电影网 | 波多野结衣电影一区二区 | 日韩区在线观看 | 免费福利片2019潦草影视午夜 | 国产日本亚洲高清 | 亚洲国产大片 | 黄色片网站大全 | 久久久久久久综合色一本 | 人人爽人人射 | 久久午夜视频 | 成人全视频免费观看在线看 | 亚洲综合激情 | 99久久99热这里只有精品 | 高清av免费一区中文字幕 | 五月天高清欧美mv | 91免费网 | 人人添人人澡 | 日韩欧美69 | 在线观看av网站 | 最新日韩在线观看 | 99操视频| 精品国产乱码久久久久久久 | 正在播放 久久 | 黄色成人av | 久久全国免费视频 | 日韩伦理片一区二区三区 | 国产精品久久久久久久久久久久久久 | 99精品国产在热久久下载 | 99热高清| 欧美日韩色婷婷 | 欧美精品v国产精品v日韩精品 | 91重口视频| 国产在线探花 | 伊人狠狠色丁香婷婷综合 | 奇米先锋 | 亚洲精色| 久久成人高清视频 | 黄色一级片视频 | 亚洲九九影院 | 一区二区中文字幕在线 | 午夜精品一区二区三区在线播放 | 久久综合色播五月 | 国产黄色精品网站 | 精品一区二区免费视频 | 伊人五月婷 | 美女网站在线观看 | 亚洲天堂激情 | 久久久国产精品电影 | 九九综合久久 | 免费色视频网址 | 久久久官网 | 国产97碰免费视频 | 国产一区 在线播放 | 亚洲少妇自拍 | 久草| 日韩在线国产 | 人人超碰97 | 久热色超碰 | 9幺看片| 午夜在线看 | 国产va在线| 国产精品福利在线播放 | 精品国产免费人成在线观看 | 国产精品亚 | 日韩精品极品视频 | 在线精品视频免费观看 | 色七七亚洲影院 | 成人h视频 | 激情偷乱人伦小说视频在线观看 | 激情五月开心 | 一区二区三区免费在线观看视频 | 蜜臀aⅴ国产精品久久久国产 | 欧美日韩二三区 | 日韩免费电影一区二区三区 | 久久精品国产精品亚洲 | 一本大道久久精品懂色aⅴ 五月婷社区 | 国产色资源 | 精品高清视频 | 亚洲精品五月天 | 波多野结衣在线中文字幕 | 日韩精品免费一区二区 | 日韩欧美在线免费观看 | 欧美激情操 | www.色午夜,com | 亚洲国产成人在线观看 | 国产午夜精品理论片在线 | 天天躁天天躁天天躁婷 | 综合国产视频 | 草久在线视频 | 岛国av在线 | 欧美韩日精品 | 日韩中文字幕亚洲一区二区va在线 | 久久久久国产精品视频 | 91少妇精拍在线播放 | 欧美久久久久久久久中文字幕 | 蜜臀av免费一区二区三区 | 成人动漫精品一区二区 | 久久久精品国产一区二区电影四季 | 99色在线 | 日韩一级电影网站 | 国产人在线成免费视频 | 国产成在线观看免费视频 | 国产乱码精品一区二区三区介绍 | 久久久综合九色合综国产精品 | 国产九九九精品视频 | 国产精品视频内 | 亚洲激情综合网 | 亚洲另类在线视频 | 国产vs久久 | 麻豆视频在线 | 91麻豆精品国产91久久久使用方法 | 亚洲国产视频直播 | 九九影视理伦片 | 香蕉在线观看 | 日韩欧美一区二区不卡 | .精品久久久麻豆国产精品 亚洲va欧美 | 精品a在线 | 4438全国亚洲精品观看视频 | 伊人亚洲综合网 | 国产精品a久久久久 | 超碰国产在线 | 91精品久久久久久久久久入口 | 激情av网址 | 国产一区网 | 久久精品亚洲一区二区三区观看模式 | 国产高清一区二区 | 成人综合婷婷国产精品久久免费 | 99精品在线播放 | 在线观看av网 | 久久久久久久久久久免费 | 免费视频成人 | 成人国产精品久久久久久亚洲 | 国产精品24小时在线观看 | 日本精品一区二区三区在线播放视频 | 日韩中文字幕免费视频 | 久久久蜜桃 | 日韩一区二区三区在线观看 | 免费成视频 | 免费日韩一区二区三区 | 91免费视频网站在线观看 | 免费观看91视频大全 | 国产精品乱码久久久 | 91精品蜜桃| 日韩一区正在播放 | 在线性视频日韩欧美 | 男女视频91 | 99热这里只有精品国产首页 | www.com久久久 | 超碰在线人人艹 | 日韩视频一区二区三区 | 欧美日韩免费观看一区二区三区 | 精品一区二区三区在线播放 | 国产999视频| 免费看国产曰批40分钟 | 日韩av一卡二卡三卡 | 国产福利精品在线观看 | 久久精品电影 | 天天草天天干天天 | 97视频免费在线看 | 国产精品欧美久久 | 91视频黄色 | 日韩经典一区二区三区 | 一级黄网 | 国产精品久久久久久久久久妇女 | 91成人免费看片 | 亚洲天堂毛片 | 人操人| 精久久久久 | 午夜美女av | 99视频偷窥在线精品国自产拍 | 成年人视频在线免费播放 | 97久久精品午夜一区二区 | 国产操在线 | 天天爽天天射 | 中文av字幕在线观看 | 91精品国产自产老师啪 | 亚洲欧美日韩国产一区二区三区 | 激情开心色 | 天天草综合| 国产一区二区在线播放视频 | 色99之美女主播在线视频 | 国产成年免费视频 | 亚洲精品字幕在线观看 | 黄色美女免费网站 | 人人射人人插 | 91豆麻精品91久久久久久 | 久久永久视频 | 色婷婷色| 国产视频69 | 亚洲精品国产精品99久久 | 国产在线视频在线观看 | 黄色特一级片 | 高清国产午夜精品久久久久久 | 国产精品2018 | 国产999久久久 | 一区二区在线电影 | 亚洲网久久 | av短片在线| 久久99精品久久久久蜜臀 | 欧美一级欧美一级 | 日韩a级免费视频 | 日日日视频 | 国产精品一区久久久久 | 欧美日韩性视频在线 | 99精品久久久久久久久久综合 | 亚洲三级黄 | 国产亚洲精品久久久网站好莱 | 欧美日韩性视频 | 五月花婷婷 | 欧美日韩高清国产 | 欧美精品在线观看免费 | 麻豆影视在线观看 | 中文字幕成人av | 麻豆小视频在线观看 | 欧美国产日韩在线视频 |