• 设计模式之简单工厂模式


    1.定义:简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。顾名思义工厂就是生产东西的,有原料(参数),模子(对象)就能生产出很多个具有相同功能的对象啦。它不属于GOF的23种设计模式,但现实中却经常会用到

    2.组成:

    这个模式本身很简单而且使用在业务较简单的情况下。一般用于小项目或者具体产品很少扩展的情况(这样工厂类才不用经常更改)。
    它由三种角色组成:
    工厂类角色:这是本模式的核心,含有一定的商业逻辑和判断逻辑,根据逻辑不同,产生具体的工厂产品。如例子中的Driver类。
    抽象产品角色:它一般是具体产品继承的父类或者实现的接口。由接口或者抽象类来实现。如例中的Car接口。
    具体产品角色:工厂类所创建的对象就是此角色的实例。在java中由一个具体类实现,如例子中的Benz、Bmw类。

    3.UML

    来用类图来清晰的表示下的它们之间的关系:


    4.应用:

    1. //抽象产品  
    2. abstract class Car{  
    3.     private String name;  
    4.       
    5.     public abstract void drive();  
    6.       
    7.     public String getName() {  
    8.         return name;  
    9.     }  
    10.     public void setName(String name) {  
    11.         this.name = name;  
    12.     }  
    13. }  
    14. //具体产品  
    15. class Benz extends Car{  
    16.     public void drive(){  
    17.         System.out.println(this.getName()+"----go-----------------------");  
    18.     }  
    19. }  
    20.   
    21. class Bmw extends Car{  
    22.     public void drive(){  
    23.         System.out.println(this.getName()+"----go-----------------------");  
    24.     }  
    25. }  
    26.   
    27. //简单工厂  
    28. class Driver{  
    29.     public static Car createCar(String car){  
    30.         Car c = null;  
    31.         if("Benz".equalsIgnoreCase(car))  
    32.             c = new Benz();  
    33.         else if("Bmw".equalsIgnoreCase(car))  
    34.             c = new Bmw();  
    35.         return c;  
    36.     }  
    37. }  
    38.   
    39. //老板 --》客户端
    40. public class BossSimplyFactory {  
    41.   
    42.     public static void main(String[] args) throws IOException {  
    43.         //老板告诉司机我今天坐奔驰  
    44.         Car car = Driver.createCar("benz");  
    45.         car.setName("benz");  
    46.          //司机开着奔驰出发  
    47.         car.drive();  
    48.     }
      1. http://www.cnblogs.com/wangjq/archive/2012/07/02/2558255.html
  • 相关阅读:
    CodeForces 659F Polycarp and Hay
    CodeForces 713C Sonya and Problem Wihtout a Legend
    CodeForces 712D Memory and Scores
    CodeForces 689E Mike and Geometry Problem
    CodeForces 675D Tree Construction
    CodeForces 671A Recycling Bottles
    CodeForces 667C Reberland Linguistics
    CodeForces 672D Robin Hood
    CodeForces 675E Trains and Statistic
    CodeForces 676D Theseus and labyrinth
  • 原文地址:https://www.cnblogs.com/myPersonalTailor/p/4939891.html
Copyright © 2020-2023  润新知