Pytorch 卷積中的 Input Shape用法
阿新 • • 發佈:2020-06-30
實際案例
我工作第三年的時候,重構旅遊路線的機票查詢模組,旅遊路線分為四種情況:
-
如果A地-B地往返都可以直達,那麼查詢兩張機票(往返)
-
如果A地-B地去程無法直達,需要中轉,但是返程可以直達,那麼查詢三張機票(去程兩張,返程一張)
-
如果A地-B地去程可以直達,但是返程需要中轉,那麼查詢三張機票(去程一張,返程兩張)
-
如果A地-B地往返都無法直達,那麼查詢四張機票(去程兩張,返程兩張)
在我重構前,程式碼差不多是這樣的:
int type = 1;// 往返都可以直達 if (type == 1) { // 查詢出兩張機票 return; } // 去程無法直達,需要中轉,但是返程可以直達 if (type == 2) { // 查詢出三張機票(去程兩張,返程一張) return; } // 去程可以直達,但是返程需要中轉 if (type == 3) { // 查詢出三張機票(去程一張,返程兩張) return; } // 往返都無法直達 else{ // 查詢出四張機票(去程兩張,返程兩張) return; }
當時我還是菜雞(現在也是),也不懂什麼設計模式,就是感覺程式碼都寫在一個類中,實在是太長了,不夠清爽,不管是哪種型別的線路,最終都是返回機票集合,只是處理邏輯不同,可以提取一個接口出來,再開四個類去實現此介面,最後定義一個Map,Key是Type,Value是介面(實現類),根據Type決定呼叫哪個實現類,就像下面的醬紫:
public class Ticket {private String desc; public Ticket(String desc) { this.desc = desc; } public String getDesc() { return desc; } public void setDesc(String desc) { this.desc = desc; } @Override public String toString() { return "Ticket{" + "desc='" + desc + '\'' + '}'; } } public interface QueryTicketService { List<Ticket> getTicketList(); } public class QueryTicketAService implements QueryTicketService { @Override public List<Ticket> getTicketList() { List<Ticket> list = new ArrayList<>(); list.add(new Ticket("去程機票")); list.add(new Ticket("返程機票")); return list; } } public class QueryTicketBService implements QueryTicketService { @Override public List<Ticket> getTicketList() { List<Ticket> list = new ArrayList<>(); list.add(new Ticket("去程第一張機票")); list.add(new Ticket("去程第二張機票")); list.add(new Ticket("返程機票")); return list; } } public class QueryTicketCService implements QueryTicketService { @Override public List<Ticket> getTicketList() { List<Ticket> list = new ArrayList<>(); list.add(new Ticket("去程機票")); list.add(new Ticket("返程第一張機票")); list.add(new Ticket("返程第二張機票")); return list; } } public class QueryTicketDService implements QueryTicketService { @Override public List<Ticket> getTicketList() { List<Ticket> list = new ArrayList<>(); list.add(new Ticket("去程第一張機票")); list.add(new Ticket("去程第二張機票")); list.add(new Ticket("返程第一張機票")); list.add(new Ticket("返程第二張機票")); return list; } } public class Main { static Map<Integer, QueryTicketService> map = new HashMap<>(); static { map.put(1, new QueryTicketAService()); map.put(2, new QueryTicketBService()); map.put(3, new QueryTicketCService()); map.put(4, new QueryTicketDService()); } public static void main(String[] args) { int type = 1; System.out.println(map.get(type).getTicketList()); } }