面试积累(简单的工厂模式)
工厂模式我们常见的设计模式之一,看看下面的demo就知道一二了。
比如说“玩手机”这是一个抽象的事件,其中的手机和玩都是抽象的:
public abstract class Phone { public abstract void play(); }
但是我们要知道怎么玩,玩什么手机,这才能变成一个具体的事件:
//玩三星手机
public class SanXing extends Phone{ @Override public void play() { System.out.println("躺着玩三星手机"); } }
//玩苹果手机
public class ApplePhone extends Phone{ @Override public void play() { System.out.println("走着玩苹果手机"); } }
//玩诺基亚手机
public class NuoJiYa extends Phone{ @Override public void play() { System.out.println("站着玩诺基亚手机"); } }
但是如果有很多人都要玩手机,我们就需要有一个手机工厂来解决这个问题:
public class PhoneFactory { public static Phone getPhone(String thisPhone){ Phone phone; if(thisPhone.equals("三星")){ phone=new SanXing(); }else if(thisPhone.equals("苹果")){ phone=new ApplePhone(); }else{ phone=new NuoJiYa(); } return phone; } }
下面我们做一个测试类来测试一下效果:
import java.util.Scanner; public class Test { public static void main(String[] args){ Scanner input=new Scanner(System.in); System.out.println("你想玩什么手机?"); String thisPhone=input.next(); Phone pf=PhoneFactory.getPhone(thisPhone); pf.play(); } }
以上就是一个简单的工厂模式的demo。