1、工厂模式
以女娲造人为例,实现简单的工厂方法模式
1、首先创建一个人类的接口,人类有肤色,会说话。
2、创建三个人类的实现类。白种人,黑种人,黄种人。
3、创建抽象人类工厂,添加造人的抽象方法,并约束其类型。
4、创建人类创建工厂,继承抽象工厂,实现造人的逻辑。
5、定义业务场景类,测试造人。
package gov.mof.fasp2.gcfr.adjustoffset.adjust; /** * 人类总称 * @author haokui * */ interface Human { void getColor();//人又肤色 void speak();//会说话 } class Black implements Human { @Override public void getColor() { System.out.println("黑种人"); } @Override public void speak() { System.out.println("黑种人说话"); } } class White implements Human { @Override public void getColor() { System.out.println("白种人"); } @Override public void speak() { System.out.println("白种人说话"); } } class Yellow implements Human { @Override public void getColor() { System.out.println("黄种人"); } @Override public void speak() { System.out.println("黄种人说话"); } } /** * 抽象人类工厂 * @author haokui * */ abstract class AbstractHumanFactory { //这里采用泛型的作用,1、必须是Class类型,2、必须是Human的实现类 abstract <T extends Human> T createHuman(Class<T> c); } class HumanFactory extends AbstractHumanFactory { @Override <T extends Human> T createHuman(Class<T> c) { Human h = null; try { h = (Human) Class.forName(c.getName()).newInstance(); } catch (Exception e) { System.out.println("生产人种错误"); } return (T)h; } } /** * 业务场景类 * @author haokui * */ public class Main { public static void main(String[] args) { //创建一个人类工厂 AbstractHumanFactory f = new HumanFactory(); Human whiteHuman = f.createHuman(White.class); whiteHuman.getColor(); whiteHuman.speak(); System.out.println("======分割线======="); Human blackHuman = f.createHuman(Black.class); blackHuman.getColor(); blackHuman.speak(); System.out.println("======分割线======="); Human yellowHuman = f.createHuman(Yellow.class); yellowHuman.getColor(); yellowHuman.speak(); } }
这只是简单的应用。当然也可以更复杂一些,比如造人要区分男性和女性,人的喜怒哀乐等等。