java 23设计模型(2)---工厂方式模型
工厂方式模型---(比喻人类或者生产线的产品)
Demo:
//抽象人类创造工厂
public abstract class AbstractHumanFactory { public abstract <T extends Human> T createHuman(Class<T> c); }
//人类创建工厂
public class HumanFactory extends AbstractHumanFactory { @Override public <T extends Human> T createHuman(Class<T> c) { Human human = null; try { human = (Human)Class.forName(c.getName()).newInstance(); }catch (Exception e) { System.out.println("people is error"); } return (T)human; } }
//人种(黄、白、黑---,不一一列举)
public class YellowHuman implements Human { @Override public void getColor() { System.out.println("yello is yello color"); } @Override public void talk() { System.out.println("yello is yello talk"); } }
//人的属性
public interface Human { public void getColor(); public void talk(); }
//开始创建人啦
public class NvWa { public static void main(String[] args) { AbstractHumanFactory YinYangLu =new HumanFactory(); System.out.println("new one people is whit man"); Human whiteHuman = YinYangLu.createHuman(WhiteHuman.class); whiteHuman.getColor(); whiteHuman.talk(); System.out.println("new two people is black man"); Human blackHuman = YinYangLu.createHuman(BlackHuman.class); blackHuman.getColor(); blackHuman.talk(); } }
-------------------------------------------------------------------------------------------------------------------------------
创建的模型:(产品模型)
//抽象工厂类
public abstract class Creator { public abstract <T extends Product> T createProduct(Class<T> c); }
//具体工厂类 public class ConcreteCreator extends Creator { @Override public <T extends Product> T createProduct(Class<T> c) { Product product = null; try { product = (Product)Class.forName(c.getName()).newInstance(); }catch (Exception e) { // TODO: handle exception } return (T)product; } }
//抽象产品类 public abstract class Product { public void method1() { } public abstract void method2(); }
//具体产品类
public class ConcreateProduct1 extends Product{ @Override public void method2() { // TODO Auto-generated method stub } }
//生产产品
public class Client { public static void main(String[] args) { Creator creator = new ConcreteCreator(); Product product = creator.createProduct(ConcreateProduct1.class); } }
《java设计模式之禅》
