工厂模式

    科技2022-07-11  146

    工厂方法模式

    抽象接口

    /** * 发型接口 */ 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(); } }
    Processed: 0.011, SQL: 8