Java におけるコード進化パターン (Code Evolution Patterns in Java) - Micro Patterns
asato shimotaki <asatohan at gmail.com>
最終更新日 : 2008/10/4 (2008/10/4 本ページから分割)
GoF デザインパターン関連
Data Manager クラスの追加
タイプ:
before:
after:
public class DataManagerClass { private int intProperty; private String stringProperty; public void setIntProperty(int intProperty) { this.intProperty = intProperty; } public int getIntProperty() { return intProperty; } public void setStringProperty(String stringProperty) { this.stringProperty = stringProperty; } public String getStringProperty() { return stringProperty; } }
参考文献とリソース
進化パス
パターン関係
関連パターン
参考文献とリソース
todo
パラメータからの Data Manager クラスの抽出
タイプ:リファクタリング
before:
public class MapChipImageInfoOutputter { public void output(int mapChipImageWidth, int mapChipImageHeight) { System.out.println("幅 : " + mapChipImageWidth); System.out.println("高さ : " + mapChipImageHeight); } }
public class Main { /** * @param args */ public static void main(String[] args) { MapChipImageInfoOutputter outputter = new MapChipImageInfoOutputter(); outputter.output(80, 80); } }after:
public class MapChipImageInfo { private int mapChipImageWidth; private int mapChipImageHeight; public MapChipImageInfo(int mapChipImageWidth, int mapChipImageHeight) { this.mapChipImageWidth = mapChipImageWidth; this.mapChipImageHeight = mapChipImageHeight; } public int getMapChipImageWidth() { return mapChipImageWidth; } public int getMapChipImageHeight() { return mapChipImageHeight; } }
public class MapChipImageInfoOutputter { public void output(MapChipImageInfo mapChipImageInfo) { System.out.println("幅 : " + mapChipImageInfo.getMapChipImageWidth() ); System.out.println("高さ : " + mapChipImageInfo.getMapChipImageHeight() ); } }
public class Main { /** * @param args */ public static void main(String[] args) { MapChipImageInfo mapChipImageInfo = new MapChipImageInfo(80, 80); MapChipImageInfoOutputter outputter = new MapChipImageInfoOutputter(); outputter.output( mapChipImageInfo ); } }
参考文献とリソース
進化パス
パターン関係
関連パターン
参考文献とリソース
todo
Data Manager クラスへの setter/getter の追加
タイプ:追加。
前提:Data Manager クラスが存在する。
before:
public class DataManager { private int data1; private int data2; public int getData1() { return data1; } public void setData1(int data1) { this.data1 = data1; } public int getData2() { return data2; } public void setData2(int data2) { this.data2 = data2; } }after:
public class DataManager { private int data1; private int data2; private int data3; public int getData1() { return data1; } public void setData1(int data1) { this.data1 = data1; } public int getData2() { return data2; } public void setData2(int data2) { this.data2 = data2; } public int getData3() { return data3; } public void setData3(int data3) { this.data3 = data3; } }
参考文献とリソース
議論
例
進化パス
パターン関係
関連パターン
参考文献とリソース
todo
Function Pointer クラスの追加
タイプ:
before:
after:
public class FunctionPointerClass { public void method() { } }
参考文献とリソース
進化パス
パターン関係
関連パターン
参考文献とリソース
todo
Function Pointer クラスの抽出
タイプ:リファクタリング
before:
public class MyClass { public void method() { log("abc"); } private void log(String str) { System.out.println(str); } }after:
public class MyClass { public void method() { new MyLogFunctionPointerClass().log("abc"); } }
public class MyLogFunctionPointerClass { public void log(String str) { System.out.println(str); } }
参考文献とリソース
進化パス
パターン関係
関連パターン
参考文献とリソース
todo
Function Object クラスの抽出
タイプ:リファクタリング
before:
public class Item { private String name; private int price; public Item(String name, int price) { this.name = name; this.price = price; } public String getName() { return name; } public int getPrice() { return price; } }
public class Main { public static void main(String[] args) { Map<String, Item> itemMap = new HashMap<String, Item>(); itemMap.put("sword", new Item("剣", 100)); itemMap.put("shield", new Item("盾", 70)); itemMap.put("armor", new Item("鎧", 120)); // ... } }after:
public class Item { private String name; private int price; public Item(String name, int price) { this.name = name; this.price = price; } public String getName() { return name; } public int getPrice() { return price; } }
public class ItemManager { private MapitemMap = new HashMap (); public ItemManager() { itemMap.put("sword", new Item("剣", 100)); itemMap.put("shield", new Item("盾", 70)); itemMap.put("armor", new Item("鎧", 120)); } public Item getItem(String name) { return itemMap.get(name); } }
public class Main { public static void main(String[] args) { ItemManager itemManager = new ItemManager(); // ... } }
参考文献とリソース
進化パス
パターン関係
関連パターン
参考文献とリソース
todo
参考文献とリソース
更新履歴
todo