zoukankan      html  css  js  c++  java
  • 设计模式之简单工厂模式

    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
  • 相关阅读:
    d3js 添加数据
    d3js 画布 概念
    Python中的 socket示例
    swift学习笔记
    加密原理介绍,代码实现DES、AES、RSA、Base64、MD5
    socket编程中客户端常用函数
    WBS 与 甘特图
    C/C++ 数据结构之算法
    Linux集群服务 LVS
    Linux内核架构与底层--读书笔记
  • 原文地址:https://www.cnblogs.com/myPersonalTailor/p/4939891.html
Copyright © 2011-2022 走看看