抽象接口
/** * 发型接口 */ public interface HairInterface { /** * 实现了发型 */ public void draw(); }接口实现类1
public class LeftHair implements HairInterface{ @Override public void draw() { System.out.println("LeftHair"); } }接口实现类2
public class RightHair implements HairInterface{ @Override public void draw() { System.out.println("RightHair"); } }工厂接口
public interface Factory { public <T extends HairInterface> T drawHair(Class<T> cls); }工厂实现类
public class HairFactory implement Factory{ /** * 根据类的名称生成对象 * @param className * @return */ public <T extends HairInterface> T drawHair(Class<T> cls){ HairInterface hair=null; try { hair=(HairInterface)Class.forName(cls.getName()).newInstance(); } catch (Exception e) { e.printStackTrace(); } return (T)hair; } }使用
public class Client { public static void main(String[] args){ new HairFactory().drawHair(RightHair.class); } }抽象接口1
public interface Boy { public void drawBoy(); }实现类1
public class HNBoy implements Boy{ @Override public void drawBoy() { System.out.println("HNBoy"); } }实现类2
public class MCBoy implements Boy{ @Override public void drawBoy() { System.out.println("MCBoy"); } }抽象接口2
public interface Girl { public void drawGirl(); }实现类1
public class HNGirl implements Girl{ @Override public void drawGirl() { System.out.println("HNGirl"); } }实现类2
public class MCGirl implements Girl{ @Override public void drawGirl() { System.out.println("MCGirl"); } }抽象工厂接口
public interface PersonFactory { public Boy getBoy(); public Girl getGirl(); }工厂实现类1
public class HNfactory implements PersonFactory{ @Override public Girl getGirl() { return new HNGirl(); } @Override public Boy getBoy() { return new HNBoy(); } }工厂实现类2
public class MCfactory implements PersonFactory{ @Override public Boy getBoy() { return new MCBoy(); } @Override public Girl getGirl() { return new MCGirl(); } }使用
public class ClientPerson { public static void main(String[] args){ PersonFactory factory=new MCfactory(); Girl girl=factory.getGirl(); } }