面试积累(简单的工厂模式)

工厂模式我们常见的设计模式之一,看看下面的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。

 

posted @ 2016-02-26 11:46  Leonardo’  阅读(229)  评论(0编辑  收藏  举报