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 繼承關系--空心三角形——實線 實線接口 空心三角形——實虛線