城市獵人

          在一網(wǎng)情深的日子里,誰(shuí)能說(shuō)得清是苦是甜,只知道確定了就義無(wú)反顧
          posts - 1, comments - 7, trackbacks - 0, articles - 89
          工廠模式是專門負(fù)責(zé)將大量有共同接口的類實(shí)例化,而且不必事先知道每次是要實(shí)例化哪一個(gè)類的模式。

          一、工廠模式有三種形態(tài)  
              簡(jiǎn)單工廠(Simple Factory)模式 ,又稱靜態(tài)工廠模式
           工廠方法(Factory Method)模式,又稱多形性工廠(Polymorphic Factory)模式
           抽象工廠(Abstract Factory)模式,又稱工具箱(Kit或Toolkit)模式 

          二、簡(jiǎn)單工廠模式

                  《Head First 設(shè)計(jì)模式》認(rèn)為它不是一個(gè)設(shè)計(jì)模式,更像一種編程習(xí)慣,優(yōu)點(diǎn)是可以將客戶端程序從具體類中解耦,不失為一個(gè)簡(jiǎn)單的方法。

          1、定義
              
          簡(jiǎn)單工廠模式是由一個(gè)工廠對(duì)象決定創(chuàng)建出那一種產(chǎn)品類的實(shí)例,它是由一個(gè)工廠類根據(jù)傳入的參量決定創(chuàng)建出哪一種產(chǎn)品類的實(shí)例。

          2、角色
              簡(jiǎn)單工廠模式涉及到工廠角色、抽象角色以及具體產(chǎn)品角色等
              
              工廠類(Creator)角色:擔(dān)任這個(gè)角色的是工廠方法模式的核心,含有與應(yīng)用緊密相關(guān)的商業(yè)邏輯。工廠類在客戶端的直接調(diào)用下創(chuàng)建產(chǎn)品對(duì)象,它往往由一個(gè)具體的JAVA類實(shí)現(xiàn)。

              抽象產(chǎn)品(Product)角色:擔(dān)任這個(gè)角色的類是工廠方法模式所創(chuàng)建的對(duì)象的父類,或他們共同擁有的接口。抽象產(chǎn)品角色可以用一個(gè)java接口或者Java抽象類實(shí)現(xiàn)。

              具體產(chǎn)品(Concrete Product)角色:工廠方法模式所創(chuàng)建的任何對(duì)象是這個(gè)角色的實(shí)例,具體產(chǎn)品角色由一個(gè)具體java類實(shí)現(xiàn)。

          3、實(shí)例


           1package com.sailor.simpleFactory;
           2
           3public abstract class Product {
           4
           5    public void produce(){
           6        System.out.println("生產(chǎn)產(chǎn)品");
           7    }

           8    
           9    public abstract void category();
          10
          11    
          12    public abstract int salePrice();
          13    
          14}

          15

           1/**
           2 * 
           3 */

           4package com.sailor.simpleFactory;
           5
           6/**
           7 * 具體產(chǎn)品
           8 * @author sailor
           9 * Jul 22, 2008 10:15:14 AM
          10 */

          11public class Car extends Product{
          12
          13    @Override
          14    public void category() {
          15        System.out.println("生產(chǎn)小汽車");
          16    }

          17
          18    @Override
          19    public int salePrice() {
          20        return new Integer(10000);
          21    }

          22
          23}

          24


           1package com.sailor.simpleFactory;
           2
           3/**
           4 * 具體產(chǎn)品
           5 * @author sailor
           6 * Jul 22, 2008 10:17:12 AM
           7 */

           8public class Pizza extends Product{
           9
          10    @Override
          11    public void category() {
          12        System.out.println("生產(chǎn)Pizza");
          13    }

          14
          15    @Override
          16    public int salePrice() {
          17        return 20;
          18    }

          19
          20}


           1/**
           2 * 工廠
           3 * @author sailor
           4 * Jul 22, 2008 10:13:23 AM
           5 */

           6public class SimpleFactory {
           7
           8    public static Product createProduct(String product){
           9        if("car".equals(product))
          10            return new Car();
          11        else if("pizza".equals(product))
          12            return new Pizza();
          13        else
          14            return null;
          15    }

          16}

           1package com.sailor.simpleFactory;
           2
           3/**
           4 * 客戶端
           5 * @author sailor
           6 * Jul 22, 2008 10:20:59 AM
           7 */

           8public class Client {
           9
          10    /**
          11     * @param args
          12     */

          13    public static void main(String[] args) {
          14        
          15        Product product1 = SimpleFactory.createProduct("car");    
          16        product1.category();
          17        product1.produce();
          18        System.out.println("銷售額: " + product1.salePrice());
          19        
          20        
          21        Product product2 = SimpleFactory.createProduct("pizza");
          22        product2.category();
          23        product2.produce();
          24        System.out.println("銷售額: " + product2.salePrice());    
          25    }

          26}
          主站蜘蛛池模板: 泗阳县| 金秀| 屯留县| 黑龙江省| 漳平市| 宣城市| 芦山县| 运城市| 上林县| 长春市| 鹤峰县| 山阳县| 宁安市| 嵊州市| 琼海市| 新河县| 泗阳县| 华安县| 慈利县| 蒲江县| 新津县| 常宁市| 华容县| 田林县| 桂平市| 昌邑市| 伊春市| 韩城市| 洪湖市| 巴彦县| 桑植县| 闸北区| 炎陵县| 乌鲁木齐市| 合山市| 英超| 麻城市| 富民县| 高尔夫| 牙克石市| 项城市|