日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

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

编程问答

人工智能在建筑运营_打造智能建筑商

發布時間:2023/12/3 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 人工智能在建筑运营_打造智能建筑商 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

人工智能在建筑運營

構建API時,您應始終考慮誰將使用它。 當API簡單易用時,用戶就會感到滿意。 當用戶滿意時,每個人也都會滿意。 但是出色的可用性并非總是容易實現的。 有一些模式對此有所幫助,在這篇文章中,我將重點介紹經典的構建器模式,以及如何使用步進構建器模式對其進行增強,以構建沒有大腦接口,易于使用且不會出錯的對象 。 因此,讓我們開始繪制一些上下文,我們有2個域對象代表連接到某個遠程或本地服務器的用戶配置。 當需要遠程憑據時,在本地時。

package com.marco.sbp; public class UserConfiguration {private final String name;private ServerDetails serverDetails;public UserConfiguration(String name) {this.name = name;}public void setServerDetails(ServerDetails serverDetails) {this.serverDetails = serverDetails;}public String getName() {return name;}public ServerDetails getServerDetails() {return serverDetails;} }package com.marco.sbp; public class ServerDetails {private final String host;private String user;private String password;public ServerDetails(String host) {this.host = host;}public void setUser(String user) {this.user = user;}public void setPassword(String password) {this.password = password;}public String getHost() {return host;}public String getUser() {return user;}public String getPassword() {return password;} }

我們想要使用兩種不同的技術(經典構建器模式和步驟構建器模式)來抽象上述對象的構造。

經典的構建器模式非常簡單,它使用諸如onLocalHost,onRemoteHost等正確命名的方法來掩蓋UserConfiguration和ServerDetails的創建。

package com.marco.sbp.builder; import com.marco.sbp.ServerDetails; import com.marco.sbp.UserConfiguration; public class ClassicBuilder {private String name;private String host;private String user;private String password;public ClassicBuilder(String name){this.name = name;}public ClassicBuilder onLocalHost(){this.host = "localhost";return this;}public ClassicBuilder onRemoteHost(String remoteHost){this.host = remoteHost;return this;}public ClassicBuilder credentials(String user, String password){this.user = user;this.password = password;return this;}public UserConfiguration build(){UserConfiguration userConfiguration = new UserConfiguration(name);ServerDetails serverDetails = new ServerDetails(host);serverDetails.setUser(user);serverDetails.setPassword(password); ? ? ? ? ? ? ? ? ? ?userConfiguration.setServerDetails(serverDetails);return userConfiguration;} }

步驟構建器模式仍在使用智能名稱來構造對象,但僅在需要使用接口和適當的封裝時才公開這些方法。

package com.marco.sbp.builder; import com.marco.sbp.ServerDetails; import com.marco.sbp.UserConfiguration;/** "Step Builder" */ public class StepBuilder {public static NameStep newBuilder() {return new Steps();}private StepBuilder() {}public static interface NameStep {/*** @param name* ? ? ? ? ? ?unique identifier for this User Configuration* @return ServerStep*/ServerStep name(String name);} ? ? ? public static interface ServerStep {/*** The hostname of the server where the User Configuration file is stored will be set to "localhost".* * @return BuildStep*/public BuildStep onLocalhost();/*** The hostname of the server where the User Configuration file is stored.* * @return CredentialsStep*/public CredentialsStep onRemotehost(String host);}public static interface CredentialsStep {/*** Username required to connect to remote machine Password required to connect to remote machine* * @return BuildStep*/public BuildStep credentials(String user, String password);}public static interface BuildStep {/*** @return an instance of a UserConfiguration based on the parameters passed during the creation.*/public UserConfiguration build();}private static class Steps implements NameStep, ServerStep, CredentialsStep, BuildStep {private String name;private String host;private String user;private String password;public BuildStep onLocalhost() {this.host = "localhost";return this;}public ServerStep name(String name) {this.name = name;return null;}public CredentialsStep onRemotehost(String host) {this.host = host;return this;}public BuildStep credentials(String user, String password) {this.user = user;this.password = password;return this;}public UserConfiguration build() {UserConfiguration userConfiguration = new UserConfiguration(name);ServerDetails serverDetails = new ServerDetails(host);serverDetails.setUser(user);serverDetails.setPassword(password); ? ? ? ? ? ? ? ? ? ?userConfiguration.setServerDetails(serverDetails);return userConfiguration;}} }

現在讓我們看一下兩個構建器的用戶體驗。 經典構建器將使用用戶配置的名稱進行構造,然后它將公開其所有方法,從而使用戶過于自由,無法選擇下一步。

例如,一個不小心的用戶可能最終將UserConfiguration設置為localhost,而無需身份驗證,仍然傳遞用戶名和密碼。

這令人困惑,并且可能導致運行時異常。

這些是用戶可能最終得到的UserConfigurations的一些可能組合,其中一些是正確的,很多是錯誤的:

步驟構建器有一個完全不同的故事,這里僅顯示了當時的一個步驟:

如果不需要憑據,則不會公開它們,只有在確定對象狀態一致且完整時才提供build()方法:

使用此模式只能構建2個可能的UserConfigurations,它們既有意義又對用戶清晰。

結論

步驟構建器模式不是經典Bloch 模式的替代,有時您想強迫用戶在進行創建之前填充一些參數,在這種情況下,步驟構建器正在執行此工作,否則當需要更開放的方法時比經典的建造者更適合您

參考:從我們的JCG合作伙伴 Marco Castigliego 構建智能建筑商 ,位于“ 刪除重復和修復不良名稱”博客中。

翻譯自: https://www.javacodegeeks.com/2013/05/building-smart-builders.html

人工智能在建筑運營

總結

以上是生活随笔為你收集整理的人工智能在建筑运营_打造智能建筑商的全部內容,希望文章能夠幫你解決所遇到的問題。

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