首页 > 代码库 > java设计模式(2)
java设计模式(2)
工厂模式定义
在面向对象程序设计中,工厂通常是用来创建其他对象的对象,工产模式根据不同的参数来实现不同的分配方案和创建对象。
在工产模式中,我们创建对象时不会对客户端暴露创建逻辑,而且是通过使用一个共同的接口来指向新创建的对象。
工厂模式通常分为:
普通工厂模式
多个工厂方法模式
静态工厂方法模式
普通工厂模式
例如用工厂模式创建人。先创建一个男人,他每天都“吃饭、睡觉、打豆豆”,然后我们再创建一个女人,她每天也“吃饭、睡觉、打豆豆”。
代码结构如下图
具体代码如下:
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(); } }
其他类代码不变
java设计模式(2)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。