工厂模式定义
在面向对象程序设计中,工厂通常是用来创建其他对象的对象,工产模式根据不同的参数来实现不同的分配方案和创建对象。
在工产模式中,我们创建对象时不会对客户端暴露创建逻辑,而且是通过使用一个共同的接口来指向新创建的对象。
工厂模式通常分为:
普通工厂模式
多个工厂方法模式
静态工厂方法模式
普通工厂模式
例如用工厂模式创建人。先创建一个男人,他每天都“吃饭、睡觉、打豆豆”,然后我们再创建一个女人,她每天也“吃饭、睡觉、打豆豆”。
代码结构如下图
具体代码如下:
public interface Human { public void eat(); public void sleep(); public void beat(); }
public class Male implements Human { @Override public void eat() { // TODO Auto-generated method stub System.out.println("Male can eat"); } @Override public void sleep() { // TODO Auto-generated method stub System.out.println("Male can sleep"); } @Override public void beat() { // TODO Auto-generated method stub System.out.println("Male can beat"); } }
public class female implements Human { @Override public void eat() { // TODO Auto-generated method stub System.out.println("Female can eat"); } @Override public void sleep() { // TODO Auto-generated method stub System.out.println("Female can sleep"); } @Override public void beat() { // TODO Auto-generated method stub System.out.println("Female can beat"); } }
public class FactoryTest { public static void main(String[] args){ HumanFactory factory =new HumanFactory(); Human male = factory.createHuman("male"); male.eat(); male.sleep(); male.beat(); } }
public class HumanFactory { public Human createHuman(String gender){ if(gender.equals("male")){ return new Male(); }else if(gender.equals("female")){ return new female(); }else{ System.out.println("sorry"); return null; } } }
运行结果如下:
Male can eat
Male can sleep
Male can beat
多个工厂方法模式
多个工厂模式就是提供多个方法,分别创建对象。
public class HumanFactory { public Male createMale(){ return new Male(); } public female createfemale(){ return new female(); } }
其他类代码都不变
静态工厂方法模式
public class HumanFactory { public static Male createMale(){ return new Male(); } public static female createfemale(){ return new female(); } }
其他类代码不变
时间: 2024-11-05 14:51:39