1. 程式人生 > >java設計模式 實驗一-簡單工廠模式

java設計模式 實驗一-簡單工廠模式

簡單工廠模式

 班級:軟體工程1班      姓名:張雨  學號:2014416558

一、實驗目的:
簡單工廠設計模式應用
二、實驗內容:
題目(一):
使用簡單工廠模式模擬女媧(Nvwa)造人(Person),如果傳入引數M,則返回一個Man物件,如果傳入引數W,則返回一個Women物件,用Java語言實現該場景。現需要增加一個新的Robot類,如果傳入引數R,則返回一個Robot物件,對程式碼進行修改並注意女媧的變化。
解答:
(1)通過分析,畫出的例項類圖如下所示:
這裡寫圖片描述

(2)例項程式碼及解釋
①抽象產品類Person

public interface Person
{
Public void
make(); }

②具體產品類Man

 Public class Man implements Person
{
Public void make()
{
System.out.println(“製造一個男人”);
}
}

③具體產品類Woman

Public class Women implements Person
{
Public void make()
{
System.out.println(“製造一個女人”);
}
}

④具體產品類Robot

Public class Robot implements Person
{
Public void make()
{
System.out.println(“製造一個機器人”);
}
}

⑤工廠類Nvwa

Public class Nvwa
{
Public static Person makePerson(String sex)
{
If(sex.equalsIgnoreCase(“M”))
{
Return new Man();
}
If(sex.equalsIgnoreCase(“W”))
{
Return new Woman();
}
If(sex.equalsIgnoreCase(“R”))
{
Return new Robot();
}
Else
{
Return null;
}
}
}

題目(二):
自學Java密碼技術,使用其中的類對字串“Hello,design pattern”進行加密,要求使用對稱加密演算法TripleDES,理解其中金鑰生成器(KeyGenerator)和密碼器(Cipher)的建立和使用。

解答:
程式碼如下:

import java.security.InvalidKeyException;  
import java.security.NoSuchAlgorithmException;  
import java.security.Security;  

import javax.crypto.BadPaddingException;  
import javax.crypto.Cipher;  
import javax.crypto.IllegalBlockSizeException;  
import javax.crypto.KeyGenerator;  
import javax.crypto.NoSuchPaddingException;  
import javax.crypto.SecretKey;  

public class EncrypDES3 
{  

  // KeyGenerator 提供對稱金鑰生成器的功能,支援各種演算法  
   private KeyGenerator keygen;  
   // SecretKey 負責儲存對稱金鑰  
   private SecretKey deskey;  
   // Cipher負責完成加密或解密工作  
   private Cipher c;  
   // 該位元組陣列負責儲存加密的結果  
   private byte[] cipherByte;  

      public EncrypDES3() throws NoSuchAlgorithmException, NoSuchPaddingException 
          {  
          Security.addProvider(new com.sun.crypto.provider.SunJCE());  
          // 例項化支援DES演算法的金鑰生成器(演算法名稱命名需按規定,否則丟擲異常)  
          keygen = KeyGenerator.getInstance("DESede");  
          // 生成金鑰  
          deskey = keygen.generateKey();  
          // 生成Cipher物件,指定其支援的DES演算法  
          c = Cipher.getInstance("DESede");  
          }  
         /** 
       * 對字串加密 
        *  
        * @param str 
        * @return 
        * @throws InvalidKeyException 
        * @throws IllegalBlockSizeException 
        * @throws BadPaddingException 
        */  
            public byte[] Encrytor(String str) throws InvalidKeyException,  
            IllegalBlockSizeException, BadPaddingException 
            {  
               // 根據金鑰,對Cipher物件進行初始化,ENCRYPT_MODE表示加密模式  
              c.init(Cipher.ENCRYPT_MODE, deskey);  
             byte[] src = str.getBytes();  
             // 加密,結果儲存進cipherByte  
             cipherByte = c.doFinal(src);  

             return cipherByte;  
          }  

    /** 
    * 對字串解密 
    *  
    * @param buff 
   * @return 
   * @throws InvalidKeyException 
   * @throws IllegalBlockSizeException 
   * @throws BadPaddingException 
   */  
   public byte[] Decryptor(byte[] buff) throws InvalidKeyException,  
          IllegalBlockSizeException, BadPaddingException 
      {  
       // 根據金鑰,對Cipher物件進行初始化,DECRYPT_MODE表示加密模式  
      c.init(Cipher.DECRYPT_MODE, deskey);  
      cipherByte = c.doFinal(buff);  
      return cipherByte;  
     }  

   /** 
    * @param args 
   * @throws NoSuchPaddingException  
   * @throws NoSuchAlgorithmException  
   * @throws BadPaddingException  
   * @throws IllegalBlockSizeException  
   * @throws InvalidKeyException  
   */  
  public static void main(String[] args) throws Exception 
 {  
       EncrypDES3 des = new EncrypDES3();  
      String msg ="Hello,design pattern";  
      byte[] encontent = des.Encrytor(msg);  
      byte[] decontent = des.Decryptor(encontent);  
       System.out.println("明文是:" + msg);  
       System.out.println("加密後:" + new String(encontent));  
       System.out.println("解密後:" + new String(decontent));  

   }  

}  




三、實驗分析:

通過這次實驗,我對簡單工廠模式有了更深的理解,能夠使用簡單工廠模式解決簡單的問題,對以前學過的Java有了印象,同時對UML類圖的設計有了進一步的理解。
希望通過以後的實驗能夠對Java有更好的掌握,同時對設計模式有更深的理解。

相關推薦

java設計模式 實驗-簡單工廠模式

簡單工廠模式 班級:軟體工程1班 姓名:張雨 學號:2014416558 一、實驗目的: 簡單工廠設計模式應用 二、實驗內容: 題目(一): 使用簡單工廠模式模擬女媧(Nvwa)造人(Person),如果傳入引數M,則返回一個Man物

(原創)我眼中的設計模式系列之簡單工廠模式()

int 業務 text 們的 acc 現在 rgs sub reat 簡單工廠模式   在日常的軟件開發中,我們一般都是按照模塊來劃分工作的。 場景一:   試想我們現在有這麽一個模塊,為其他的模塊提供服務,比如說我們調用了好幾個外部接口,統一返回XML字符串,每個接口返回

Java設計模式百例 - 簡單工廠模式

java設計模式工廠模式(Factory Pattern)是 Java 中最常用的設計模式之一。這種類型的設計模式屬於創建型模式,它提供了一種創建對象很好的方式。具體來說,有簡單工廠模式(simple factory)、工廠方法模式(factory method)和抽象工廠模式(abstract factor

Java設計模式學習記錄-簡單工廠模式工廠方法模式

static ip ofa 關心 有一個 就是 con 14. 對比 div 前言 之前介紹了設計模式的原則和分類等概述。今天開啟設計模式的學習,首先要介紹的就是工廠模式,在介紹工廠模式前會先介紹一下簡單工廠模式,這樣由淺入深來介紹。 簡單工廠模式 做法:創建一個工

JAVA設計模式】1.簡單工廠模式

簡單工廠模式是建立型設計模式: 建立型設計模式即封裝了具體生成物件的細節,僅暴露出生成物件的方法。只需向建立物件的方法提供引數,而不用自行實現判斷的邏輯。 UML圖(圖片來自網路): 簡單工廠模式提供了一個建立者類,暴露了一個工廠方法,用於根據接收的引數返回對應的具

Java設計模式工廠模式

目錄 1、工廠模式簡介 2、工廠模式分類 2.1 簡單工廠模式 2.2 工廠方法模式 2.3 抽象工廠模式 1、工廠模式簡介 工廠模式(Factory Pattern)是 Java 中最常用的設計模式之

java設計模式學習筆記--簡單工廠模式

1. 什麼是簡單工廠模式 簡單工廠模式是屬於建立型模式,又叫做靜態工廠方法(Static Factory Method)模式。簡單工廠模式是由一個工廠物件決定創建出哪一種產品類的例項。但是嚴格來說,簡單工廠模式不是設計模式,它更像是一種程式設計習慣。 2.

《大話設計模式》之簡單工廠模式Java版)

##導火線: “請用C++、Java、C#或VB.NET任意一種面嚮物件語言實現一個計算器控制檯程式,要求輸入兩個數和運算子號,得到結果。” #菜鳥階段的程式設計: public class demo { public static void m

設計模式() 簡單工廠模式

控制 pos created 判斷 方法 lse tor 小店 des layout: post title: 設計模式(一) 簡單工廠模式 tags: Design_Patterns categories: Design_Patterns description: 我

Java描述設計模式(02):簡單工廠模式

一、生活場景簡介 1、引入場景 訂餐流程簡單描述 1)、食品抽象類,規定食品的基礎屬性操作 2)、魚類,雞肉類食品類擴充套件 3)

設計模式之策略模式&簡單工廠模式

抽象 jsb args watermark amp pri eas 時間 並且 學習設計模式已經有非常長一段時間了。事實上先前已經敲過一遍了,可是老認為沒有學到什麽,認識也不夠深刻,如今趁著重構機房。再又一次來過,也不晚。 事實上在敲了機房之後,看看模式,事實

Note8:C#設計模式工廠方法模式(VS 簡單工廠模式 & 抽象工廠模式

工廠方法模式 blog 抽象工廠 nbsp strong str cnblogs note 設計 一、資源說明 (1)本文有參考:http://www.cnblogs.com/zhili/p/FactoryMethod.html 待更!Note8:C#設計模式—工廠方法

()簡單工廠模式

pan 銷售 對象 ros sta 水果 which 經驗 string (一)簡單工廠模式 作者:林子 時間:2014年8月 出處:http://blog.csdn.net/u013011841 聲明:歡迎指出錯誤 1、為什麽學習設計模式? 設計模

初識設計模式1:簡單工廠模式

簡單工廠 height 判斷 目前 mes strong 產品 return logs 簡單工廠模式 簡單工廠模式是類的創建模式,又叫做靜態工廠方法模式。簡單工廠模式由一個工廠對象決定生產出哪一種產品類的實例。 為什麽要使用簡單工廠模式 原因很簡單:解耦。 LOL場

【JS設計模式】溫習簡單工廠模式工廠方法模式、抽象工廠模式概念

his mac script 開頭 str new 每一個 簡單工廠 pattern 註:空心箭頭表示的是種繼承關系,工廠類和產品類之間是一種依賴關系。是用箭頭加虛線表示的,以下的模型圖是用的實線是不正確(時間不夠用,在這裏我偷懶了。這個習慣不好,呵呵)簡單工廠模式(S

JAVA模式》之簡單工廠模式

pue hgj ans vfs 創建對象 mdm gho fdm got 在閻宏博士的《JAVA與模式》一書中開頭是這樣描述簡單工廠模式的:簡單工廠模式是類的創建模式,又叫做靜態工廠方法(Static Factory Method)模式。簡單工廠模式是由一個工廠對象決定創建

設計模式工廠模式

inside 類和對象 ace square 種類型 創建 實體類 需要 服務器 工廠模式 工廠模式(Factory Pattern)是 Java 中最常用的設計模式之一。這種類型的設計模式屬於創建型模式,它提供了一種創建對象的最佳方式。 在工廠模式中,我們在創建對象時不會

設計模式筆記:簡單工廠模式 -- 創建型

-- 一個 筆記 簡單 靜態 com 工廠模式 不同 static 簡單工廠模式 定義一個工廠類,可以根據輸入的不同返回不同類的實例。被創建的類通常有共同的父類。因為通常創建實例的方法都是static,所以又被稱為靜態工廠模式 代碼樣例 設計模式筆記:簡單

設計模式學習1——簡單工廠模式

定義 簡單工廠模式(Simple Factory Pattern):又稱為靜態工廠方法(Static Factory Method)模式,它屬於類建立型模式,但不屬於23種GOF設計模式之一,說它是一種程式設計習慣可能更恰當些。在簡單工廠模式中,可以根據引數的不同返回不同類的例項。簡單工廠模式專

大話設計模式第一章-簡單工廠模式

dem 虛線 大話設計模式 設計 箭頭 bsp 工廠 第一章 簡單 1 簡單工廠模式--uml 繼承關系--空心三角形——實線 實線接口 空心三角形——實虛線