人工智能在建筑运营_打造智能建筑商
人工智能在建筑運營
構建API時,您應始終考慮誰將使用它。 當API簡單易用時,用戶就會感到滿意。 當用戶滿意時,每個人也都會滿意。 但是出色的可用性并非總是容易實現的。 有一些模式對此有所幫助,在這篇文章中,我將重點介紹經典的構建器模式,以及如何使用步進構建器模式對其進行增強,以構建沒有大腦接口,易于使用且不會出錯的對象 。 因此,讓我們開始繪制一些上下文,我們有2個域對象代表連接到某個遠程或本地服務器的用戶配置。 當需要遠程憑據時,在本地時。
我們想要使用兩種不同的技術(經典構建器模式和步驟構建器模式)來抽象上述對象的構造。
經典的構建器模式非常簡單,它使用諸如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 模式的替代,有時您想強迫用戶在進行創建之前填充一些參數,在這種情況下,步驟構建器正在執行此工作,否則當需要更開放的方法時比經典的建造者更適合您
翻譯自: https://www.javacodegeeks.com/2013/05/building-smart-builders.html
人工智能在建筑運營
總結
以上是生活随笔為你收集整理的人工智能在建筑运营_打造智能建筑商的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机构预测:华为回归 苹果在中国将遭遇更大
- 下一篇: 盖世小鸡 G8 Type-C 手游手柄亮