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设计模式之禅》

经验分享 程序员 微信小程序 职场和发展