zoukankan      html  css  js  c++  java
  • 面试积累(简单的工厂模式)

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

  • 相关阅读:
    有向无环图单源最短路径问题
    linux下程序编译出错解决方法
    Ceres入门笔记
    Java 中的数据结构类 Vector 和 ArrayList
    102. Binary Tree Level Order Traversal
    104. Maximum Depth of Binary Tree
    101. Symmetric Tree
    100. Same Tree
    490. The Maze
    骑士游历问题
  • 原文地址:https://www.cnblogs.com/Leonar-do/p/5219887.html
Copyright © 2011-2022 走看看