1.工厂类
package com.git.base.designpatterns.factory; /** * * <p>Title: PetFactory.java</p> * <p>Description:工厂类设计模式 生产各种宠物实例</p> * <p>Copyright: Copyright (c) 2016</p> * <p>Company: Sage</p> * @author 五虎将 * @date 2016年5月3日下午10:19:44 * @version 1.0 */ public class PetFactory { public static Pet getIntance(String className){ Pet pet = null; if("dog".equals(className)){ pet = new Dog(); }else if("cat".equals(className)){ pet = new Cat(); }else{ pet = new DefaultPet(); } return pet; } }
package com.git.base.designpatterns.factory; /** * * <p>Title: Pet.java</p> * <p>Description:宠物类</p> * <p>Copyright: Copyright (c) 2016</p> * <p>Company: Sage</p> * @author 五虎将 * @date 2016年5月3日下午10:20:56 * @version 1.0 */ public interface Pet { public String sayName(); }
3.具体的工厂要生产的产品类
package com.git.base.designpatterns.factory; /** * * <p>Title: Dog.java</p> * <p>Description:宠物狗类</p> * <p>Copyright: Copyright (c) 2016</p> * <p>Company: Sage</p> * @author 五虎将 * @date 2016年5月3日下午10:22:48 * @version 1.0 */ public class Dog implements Pet { @Override public String sayName() { return "my name is longlong ,what's your name?"; } }
package com.git.base.designpatterns.factory; public class Cat implements Pet { @Override public String sayName() { return "hi,my name is longmao."; } }
package com.git.base.designpatterns.factory; /** * * <p>Title: DefaultPet.java</p> * <p>Description:默认的宠物类</p> * <p>Copyright: Copyright (c) 2016</p> * <p>Company: Sage</p> * @author 五虎将 * @date 2016年5月3日下午10:28:10 * @version 1.0 */ public class DefaultPet implements Pet { @Override public String sayName() { return "You want me to call what name? "; } }
4.运行测试类
package com.git.base.designpatterns.factory; /** * * <p>Title: PetTest.java</p> * <p>Description:宠物测试类</p> * <p>Copyright: Copyright (c) 2016</p> * <p>Company: Sage</p> * @author 五虎将 * @date 2016年5月3日下午10:30:54 * @version 1.0 */ public class PetTest { public static void main(String[] args) { Pet pet1 = PetFactory.getIntance(""); System.out.println(pet1.sayName()); Pet pet2 = PetFactory.getIntance("dog"); System.out.println(pet2.sayName()); Pet pet3 = PetFactory.getIntance("cat"); System.out.println(pet3.sayName()); } }