最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java使用原型模式展現(xiàn)每日生活應用案例詳解

 更新時間:2018年05月17日 11:51:22   作者:chengqiuming  
這篇文章主要介紹了Java使用原型模式展現(xiàn)每日生活應用案例,較為詳細的分析了原型模式的概念、原理及Java使用原型模式展現(xiàn)每日生活案例的相關操作步驟與注意事項,需要的朋友可以參考下

本文實例講述了Java使用原型模式展現(xiàn)每日生活。分享給大家供大家參考,具體如下:

一、模式定義

用原型實例指定創(chuàng)建對象的種類,并且通過復制這些原型創(chuàng)建新的對象。

二、模式舉例

1 模式分析

我們借用每日上班情景耒說明這一模式。

2 故事情節(jié)分析圖

3 原型模式靜態(tài)建模

4 代碼示例

4.1 原型建立

package com.prototype.pojo;
/**
 * 日常生活類
 *
 * @author
 *
 */
public class DayLife implements Cloneable {
  // 構造方法
  public DayLife() {
    System.out.println("-- 執(zhí)行構造方法了! --");
  }
  // 起床
  private String getUp;
  // 坐公交
  private String byBus;
  // 下車,買早餐
  private String getFood;
  // 中午小憩
  private String noon;
  // 下午開始工作
  private String afternoonWork;
  // 下班回家
  private String goHome;
  // 晚上休閑
  private String night;
  public String getGetUp() {
    return getUp;
  }
  public void setGetUp(String getUp) {
    this.getUp = getUp;
  }
  public String getByBus() {
    return byBus;
  }
  public void setByBus(String byBus) {
    this.byBus = byBus;
  }
  public String getGetFood() {
    return getFood;
  }
  public void setGetFood(String getFood) {
    this.getFood = getFood;
  }
  public String getNoon() {
    return noon;
  }
  public void setNoon(String noon) {
    this.noon = noon;
  }
  public String getAfternoonWork() {
    return afternoonWork;
  }
  public void setAfternoonWork(String afternoonWork) {
    this.afternoonWork = afternoonWork;
  }
  public String getGoHome() {
    return goHome;
  }
  public void setGoHome(String goHome) {
    this.goHome = goHome;
  }
  public String getNight() {
    return night;
  }
  public void setNight(String night) {
    this.night = night;
  }
  /**
   * 打印輸出日常生活信息
   */
  public void print() {
    System.out.println(this.getGetUp());
    System.out.println(this.getByBus());
    System.out.println(this.getGetFood());
    System.out.println(this.getNoon());
    System.out.println(this.getAfternoonWork());
    System.out.println(this.getGoHome());
    System.out.println(this.getNight());
  }
  /**
   * clone方法
   */
  @Override
  public DayLife clone() {
    try {
      // 調(diào)用超類的clone方法(超類?也沒有集成任何類?。磕睦飦淼某??別忘記了,所有類都是Object的子類哦!)
      return (DayLife) super.clone();
    } catch (Exception e) {
    }
    return null;
  }
}

4.2 創(chuàng)建生成原型對象的抽象工廠

package com.prototype.factory;
import com.prototype.pojo.DayLife;
/**
 * 工廠類
 *
 * @author
 *
 */
public interface ILifeFactory {
  /**
   * 生產(chǎn)DayLife對象
   *
   * @return
   */
  public DayLife getNewInstance();
}

4.3 創(chuàng)建生成原型對象的具體工廠

package com.prototype.factory.impl;
import com.prototype.factory.ILifeFactory;
import com.prototype.pojo.DayLife;
/**
 * 工廠實現(xiàn)類
 *
 * @author
 *
 */
public class LifeFactoryImpl implements ILifeFactory {
  // DayLife對象實例用于初始化
  private static DayLife dayLife = null;
  /**
   * getNewInstance方法實現(xiàn):
   *
   * 首先判斷dayLife是否為null:
   * 如果是null,則使用new創(chuàng)建一個DayLife對象,同時設置初始內(nèi)容,然后賦值給dayLife對象實例,然后返回;
   * 如果不是null,則使用dayLift的clone方法產(chǎn)生一個新對象并復制給dayLife對象,然后返回
   */
  @Override
  public DayLife getNewInstance() {
    // 判斷dayLife是否為null
    if (dayLife == null) {
      // 如果為null
      // 輸出是使用new 產(chǎn)生的對象。注意:new這個只使用一次哦!
      System.out.println(" new DayLife !");
      // 設置dayLife內(nèi)容
      dayLife = new DayLife();
      dayLife.setGetUp("7:00起床");
      dayLife.setByBus("7:30坐公交車");
      dayLife.setGetFood("8:30到公司附近的公交站下車,經(jīng)過路旁的早餐車時會順便買好早餐一起帶到公司");
      dayLife.setNoon("午餐在公司附近的小餐館解決,然后在辦公室的座椅上小憩一會");
      dayLife.setAfternoonWork("13:30開始了下午的工作");
      dayLife.setGoHome("17:30準時下班");
      dayLife.setNight("晚上休閑娛樂");
    } else {
      // 如果不為null
      // 輸出是使用clone方法產(chǎn)生的對象
      System.out.println(" clone DayLife !");
      // 將clone對象賦值給dayLife ,返回
      dayLife = dayLife.clone();
    }
    return dayLife;
  }
}

4.4 每日工作情景展現(xiàn)

package com;
import com.prototype.factory.ILifeFactory;
import com.prototype.factory.impl.LifeFactoryImpl;
import com.prototype.pojo.DayLife;
/**
 * 主應用程序
 *
 * @author
 *
 */
public class Client {
  public static void main(String[] args) {
    // 創(chuàng)建工廠
    ILifeFactory lifeFactory = new LifeFactoryImpl();
    // 打印輸出DayLife默認內(nèi)容
    lifeFactory.getNewInstance().print();
    // 再次獲得DayLife,修改getUp內(nèi)容后 輸出內(nèi)容
    System.out.println("------------------------");
    DayLife dayLife = lifeFactory.getNewInstance();
    dayLife.setGetUp("早上賴床了!7::15才起床!");
    dayLife.print();
    // 再次獲得DayLife,修改getUp內(nèi)容后 輸出內(nèi)容
    // System.out.println("------------------------");
    // DayLife dayLife2 = lifeFactory.getNewInstance();
    // dayLife2.setGetUp("早上賴床了!7::30才起床!");
    // dayLife2.print();
  }
}

運行結果

 new DayLife !
-- 執(zhí)行構造方法了! --
7:00起床
7:30坐公交車
8:30到公司附近的公交站下車,經(jīng)過路旁的早餐車時會順便買好早餐一起帶到公司
午餐在公司附近的小餐館解決,然后在辦公室的座椅上小憩一會
13:30開始了下午的工作
17:30準時下班
晚上休閑娛樂
------------------------
 clone DayLife !
早上賴床了!7::15才起床!
7:30坐公交車
8:30到公司附近的公交站下車,經(jīng)過路旁的早餐車時會順便買好早餐一起帶到公司
午餐在公司附近的小餐館解決,然后在辦公室的座椅上小憩一會
13:30開始了下午的工作
17:30準時下班
晚上休閑娛樂

三、該模式的設計原剛

1 克隆對象時對象的構造方法不執(zhí)行
2 淺復制和深復制

四、使用場合

1 產(chǎn)生對彖的過程比較復雜,初始化需要許多資源
2 希望框架原型和產(chǎn)生對象分開時
3 同一個對象可能會供其他調(diào)用者同時調(diào)用訪問時

更多關于java算法相關內(nèi)容感興趣的讀者可查看本站專題:《Java數(shù)據(jù)結構與算法教程》、《Java操作DOM節(jié)點技巧總結》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總

希望本文所述對大家java程序設計有所幫助。

相關文章

  • Kotlin?標準函數(shù)和靜態(tài)方法示例詳解

    Kotlin?標準函數(shù)和靜態(tài)方法示例詳解

    這篇文章主要為大家介紹了Kotlin?標準函數(shù)和靜態(tài)方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-10-10
  • Java 添加、讀取和刪除 Excel 批注的操作代碼

    Java 添加、讀取和刪除 Excel 批注的操作代碼

    這篇文章主要介紹了Java 添加、讀取和刪除 Excel 批注的操作方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-04-04
  • Spring?Data?JPA實現(xiàn)查詢結果返回map或自定義的實體類

    Spring?Data?JPA實現(xiàn)查詢結果返回map或自定義的實體類

    這篇文章主要介紹了Spring?Data?JPA實現(xiàn)查詢結果返回map或自定義的實體類,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • SpringBoot讀取資源目錄中JSON文件的方法實例

    SpringBoot讀取資源目錄中JSON文件的方法實例

    最近做項目遇到需要將json類型的配置文件引用到項目中,已經(jīng)將讀取json文件的方法封裝成工具類,下面這篇文章主要給大家介紹了關于SpringBoot讀取資源目錄中JSON文件的相關資料,需要的朋友可以參考下
    2023-04-04
  • Java中將String轉(zhuǎn)換為char數(shù)組的三種方式

    Java中將String轉(zhuǎn)換為char數(shù)組的三種方式

    這篇文章主要介紹了三種將字符串轉(zhuǎn)換為字符數(shù)組的方法,分別是toCharArray()、charAt()和循環(huán)、getChars(),每種方法都有其適用場景和優(yōu)缺點,需要的朋友可以參考下
    2024-12-12
  • java實現(xiàn)sunday算法示例分享

    java實現(xiàn)sunday算法示例分享

    Sunday算法的思想和BM算法中的壞字符思想非常類似。差別只是在于Sunday算法在匹配失敗之后,是取目標串中當前和Pattern字符串對應的部分后面一個位置的字符來做壞字符匹配,寫了個小例子來實現(xiàn)以下這個算法
    2014-01-01
  • Java實現(xiàn)百度AOI數(shù)據(jù)的解析與轉(zhuǎn)換

    Java實現(xiàn)百度AOI數(shù)據(jù)的解析與轉(zhuǎn)換

    Java作為一種成熟且廣泛應用的編程語言,具有跨平臺、面向?qū)ο蟆踩愿叩忍攸c,非常適合用于開發(fā)各種類型的應用程序,本文為大家整理了基于Java的AOI數(shù)據(jù)解析與轉(zhuǎn)換的實現(xiàn)方法,需要的可以參考下
    2025-02-02
  • springboot如何配置多kafka

    springboot如何配置多kafka

    這篇文章主要介紹了springboot如何配置多kafka問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • Mybatis-plus更新Null字段的四種方法

    Mybatis-plus更新Null字段的四種方法

    在項目開發(fā)過程中,經(jīng)常會使用Mybatis-plus的updateById()方法,快速將接收道德參數(shù)或者查詢結果中原本不為null的字段更新為null,這個時候使用updateById()并不能實現(xiàn)這個操作,不會報錯,但是對應的字段并沒有更新為null,所以本文介紹了Mybatis-plus更新Null字段的方法
    2025-03-03
  • 利用Java手寫阻塞隊列的示例代碼

    利用Java手寫阻塞隊列的示例代碼

    在我們平時編程的時候一個很重要的工具就是容器,在本篇文章當中主要給大家介紹阻塞隊列的原理,并且在了解原理之后自己動手實現(xiàn)一個低配版的阻塞隊列,感興趣的可以嘗試一下
    2022-08-08

最新評論

兴义市| 广州市| 武定县| 河源市| 长春市| 陇西县| 沭阳县| 云安县| 应用必备| 潜江市| 高陵县| 建平县| 洪湖市| 岑巩县| 元朗区| 昌黎县| 汝南县| 灌阳县| 加查县| 绥德县| 庄浪县| 青铜峡市| 呼伦贝尔市| 友谊县| 额济纳旗| 新宁县| 陆丰市| 铜陵市| 抚顺县| 武乡县| 太原市| 温泉县| 普兰县| 全州县| 五原县| 齐齐哈尔市| 资阳市| 林州市| 北宁市| 濮阳市| 德江县|