Java筆記11-軟件開發流程設計原則

今天內容:

  • 1.常用的設計原則
  • 2.常用的設計模式
  • 3.常用的查找算法
  • 4.常用的排序算法

1.常用的設計原則(記住)

1.1軟件的開發流程

軟件開發授權-投標 -> 100萬
1. 編寫需求分析文檔 => 
2. 概要設計文檔(架構) => 
3. 詳細設計文檔(類圖) => 
4. 編碼(項目經理分具體任務)還要測試  (SVN/GIT)單元測試,模塊測試(一般都是美女多一些,對于技術要求比較低) 黑盒測試 白盒測試
5. 安裝和調試寫使用說明文檔
6. 維護和升級軟件公司和客戶協商(錢要到位)還有一錘子買賣的(就是不管維護那種)如果整個開發周期是半年(可能編碼只占一個月的時間)
架構師把架構架構錯了,那就都白干了,重新架構意味著要加班,這種情況不多,因為架構師至少要5年以上經驗的
絕大多是是客戶的需求問題,或者是客戶要加功能.

1.2常用的設計原則

1. 開放封閉原則(Open Close Principe)

對于擴展開放,對于修改關閉,為了使程序的擴展性好,易于維護
如:

public  class  Person{private String name;private int age;private boolean gender;// ...
}

不,這樣前面美女測試人呢的工作就白做了,所以應該這樣

public  class  Person{private String name;private int age;// ...
}
public class SubPerson extends Person{private boolean gender;//...
}

2. 里氏代換原則(Liskov Substitution Principe)

  • 任何父類可以出現的地方,子類一定可以出現

  • 子類is a 父類

  • 在以后的開發中多使用繼承和多態的理念

    多態的實際意義:
    屏蔽不同子類的差異性,實現通用的編程,產生不同的結果
    如:

public statie void draw(Shape s){s.show();
}
ShapeTest.draw(new Rect(1,2,3,4));
ShapeTest.draw(new Circle(5,6,7));
// 父類類型的引用能到的地方,子類的引用也能到

3.依賴倒轉原則(Dependence Inversion Principle)

盡量多依賴于抽象類或接口而不是具體實現類,對子類具有強制性和規范性
如:

publice class Account{public double getLix(){// ...        }
}
publice class FixedAccount extends Account{//我這里想重寫就重寫,以為我的父類也不是抽象的 
}

要是這樣,就符合了

publice abstract class Account{public abstract double getLix(){// ...        }
}
publice class FixedAccount extends Account{// 這回就不得不繼承了@Overridepublic double getLixi(){} 
}

4.接口隔離原則(interface segregation principle)

  • 盡量依賴于小接口而不是大接口,避免接口的污染
  • 可以降低耦合度
  • 耦合主要指一個模塊于其他模塊之間的關聯度.

如:

public interface Animal{public abstract void run();//描述奔跑 行為public abstract void fly(); //描述飛行行為
}public class Dog implements Animal{public abstract void run(){...};public abstract void fly(){
//        這個方法沒法寫了}
}

5.迪米特法則(最少知道原則) (Demeter Principe)

  • 一個實體應當盡量少于其他實體之間 發生相互作用
  • 低耦合,高內聚
  • 高內聚就是指將一個實體應當將該實體應該擁有的功能盡量聚集在該實體內部

6.合成復用原則(Composite Reuse Principe)

  • 盡量多使用合成的方式,而不是繼承的方式.
    如:
public class A{public void show(){...}... ...
}
public class B extends A{public void test(){// 調用show方法show();}... ...// 這樣不推薦,因為java只能單繼承,或者說會影響調用show()方法時候的性能,因為繼承會繼承父類的所有方法
}

升級版

public class A{public void show(){...}... ...
}
public class B{private A a;public void test(){// 調用show方法a.show()}... ...// 這樣不推薦,因為java只能單繼承,或者說會影響調用show()方法時候的性能,因為繼承會繼承父類的所有方法
}

2常用設計模式

2.1 基本概念

  • 設計模式是一套被反復使用,多數人知曉的,經過分類編目的,設計經驗的總結.
  • 設計模式就是一種用于固定場合的固定套路

2.2 常用設計模式
單例設計模式

模板設計模式

工廠方法模式:
當你需要大量創建對象的時候,你就需要創建一個工廠類,然后創建一個工程方法, 這樣可以提高程序的可維護性和擴展性

抽象工廠模式

3.常用的查找算法()

  • 3.1線性查找算法(重中之重)

  • 3.2折半查找算法

4.常用的排序算法

冒泡排序算法

比較相鄰位置的兩個元素,若第一個元素比第二個元素大則交換;

從開始的第一對元素一直到結尾的最后一對元素,經過這一輪找到了最大值并放在了最后;

持續對越來越少的元素進行量量比較,直到所有元素不再發生交換為止;

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/455458.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/455458.shtml
英文地址,請注明出處:http://en.pswp.cn/news/455458.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

magnify.m —— 圖像局部放大鏡工具函數

magnify.m 函數下載地址:magnify - File Exchange - MATLAB Central; magnify.m 函數在執行時,是一種交互式處理。 簡單演示如下: clear, clc% 加載圖像到內存,如讀取matlab自帶的圖像,并將其顯示出來 I i…

【大數據系列】hadoop單節點安裝官方文檔翻譯

Hadoop: Setting up a Single Node Cluster. HADOOP:建立單節點集群 PurposePrerequisites Supported PlatformsRequired SoftwareInstalling SoftwareDownloadPrepare to Start the Hadoop ClusterStandalone OperationPseudo-Distributed Operation Configuration…

qmlcanvas繪制3d圖形_透視Matplotlib核心功能和工具包 - 繪制3D圖形

關聯知識MatplotlibPython線圖在此,我們將學習如何創建3D線圖。 它類似于2D等效折線圖,并且2D折線圖的許多屬性都結轉到3D。我們將在相同的軸上繪制凹凸曲線,并從不同角度查看它們,例如平行視圖,頂視圖以及圍繞z軸的旋…

264 解碼之 yuv

博客訪問量日漸減少,于是我決定丟一點技術東東上去,吸引爬蟲光顧一下。先談談 h.264 的編解碼問題。個人建議做視頻、音頻的孩子們,一定要抓住 RFC 和 standard ,然后多看開源編解碼程序。近來抽空看了兩個 decoder ,一…

Java筆記12-函數式接口

主要內容 自定義函數式接口函數式編程常用函數式接口 第一章 函數式接口 概念 函數式接口在java中指的是:有且只有一個抽象方法的接口 函數式接口,即適用于函數式編程場景的接口.而java中共的函數式編程體現就是Lambda,所以函數式接口就是可以適用于lambda使用的接口.只有…

雷軍曬3億估值,意欲“收編”臺灣硬件創業者?

1月13日,在臺灣的CSMIC 2015移動互聯網兩岸年會上,雷軍以獵豹移動董事長的身份做了《給年輕創業者的兩大方向性建議》演講。 演講中雷軍表示,“在未來5到10年,特別適合臺灣年輕創業者做的兩個方向,一個是移動互聯網&am…

網頁“console”輸出圖文信息

http://www.monmonkey.com/javascript/jiben2.html 參考以上鏈接中的轉義字符使用。 http://www.cnblogs.com/Wayou/p/chrome_dev_tool_style_console.html https://segmentfault.com/a/1190000002511877 以上鏈接里有各種 console 輸出 ASCII圖文的實現方法。 ASCII圖文動態效…

記事本安卓軟件代碼設計_用輕量級工具 Notepad3 替代 36 歲的微軟記事本

一不小心,微軟記事本發布 36 年了。雖然微軟記事本自 1985 年 Windows 1.0 以來已包含在所有版本的 Microsoft Windows 中,但它太基礎了,以至于幾乎所有人都要替代它,比如輕量級的 Notepad3,支持代碼高亮/折疊、括號匹…

H.264編碼技術

H.264基本概況隨著HDTV的興起,H.264這個規范頻頻出現在我們眼前,HD-DVD和藍光DVD均計劃采用這一標準進行節目制作。而且自2005年下半年以來,無論是NVIDIA還是ATI都把支持H.264硬件解碼加速作為自己最值得夸耀的視頻技術。H.264到底是何方“神…

Java筆記13-兄弟連在線考試系統

今天內容: 1.兄弟連在線考試系統 1.1 軟件開發的流程 需求分析文檔 > 概要設計文檔 > 詳細設計文檔 > 編碼和測試1.2 編寫目的 (1)復習JavaSE所學的所有內容。 (2)鍛煉基本的編程能力。 1.3 功能分析 考試系統:(1)學員系統a.修改密碼b.開始…

macOS自帶Python2.7刪除之后的悲劇

2019獨角獸企業重金招聘Python工程師標準>>> 起因 今天打開xcode想要開始繼續寫項目的時候悲劇了. Loading a plug-in failed. The plug-in or one of its prerequisite plug-ins may be missing or damaged and may need to be reinstalled. 嘗試用終端打開看看報…

EasyUI 表格點擊右鍵添加或刷新 綁定右鍵菜單

例1 在HTML頁面中設置一個隱藏的菜單&#xff08;前提是已經使用封裝的Easyui&#xff09; 代碼&#xff1a; <div id"contextMenu_jygl" class"easyui-menu" style"width: 80px; display: none;"> <div …

python神奇的小海龜_Python筆記_第一篇_面向過程_第一部分_8.畫圖工具(小海龜turtle)...

turtle 是一個簡單的繪圖工具。提供一個小海龜&#xff0c;可以把它理解為一個機器人&#xff0c;只能聽懂有限的命令&#xff0c;且繪圖窗口的原點(0,0)在中間&#xff0c;默認海龜的方向是右側海龜的命令包括三類&#xff1a;運動命令、筆畫控制命令、其他命令。1. 運動命令…

jupyter淺析

一、jupyter 起步:簡介 Jupyter Notebook是一個開源的Web應用程序&#xff0c;允許用戶創建和共享包含代碼、方程式、可視化和文本的文檔。它的用途包括&#xff1a;數據清理和轉換、數值模擬、統計建模、數據可視化、機器學習等等。它具有以下優勢&#xff1a; 可選擇語言&a…

我在全球最大的同性社交平臺那點事

本文作者&#xff1a;夏之冰雪&#xff0c;i春秋簽約作家 《我在百度網盤上看到上萬條車主個人信息,企業、政府高官信息、各種數據庫和無窮無盡的盜版》&#xff0c;一時間&#xff0c;這篇文章就火了&#xff0c;火爆程度另百度猝不及防。 其實呢&#xff0c;這事真不能全怪百…

H.264的CAVLC(編碼.解碼)過程詳解

看264也看到CAVLC來了&#xff0c;把這方面的資料貼在這里&#xff1a; 編碼過程&#xff1a; 假設有一個4*4數據塊 &#xff08;變化&#xff0c;量化后就送入熵編碼&#xff09;{ 0 , 3 , -1 , 0, 0, -1 , 1, 0, 1 , 0 , 0 , 0, 0 , 0 , 0 , 0 } 數據重排列&a…

python進程通信方式有幾種_python全棧開發基礎【第二十一篇】互斥鎖以及進程之間的三種通信方式(IPC)以及生產者個消費者模型...

一、互斥鎖進程之間數據隔離&#xff0c;但是共享一套文件系統&#xff0c;因而可以通過文件來實現進程直接的通信&#xff0c;但問題是必須自己加鎖處理。注意&#xff1a;加鎖的目的是為了保證多個進程修改同一塊數據時&#xff0c;同一時間只能有一個修改&#xff0c;即串行…

Python實現修改圖片尺寸

起步 很多小伙伴從網上找的圖片可能圖片尺寸與自己的需求不符合 今天小編就教大家使用python寫一個簡單腳本程序實現修改圖片的尺寸 環境準備 首先我們需要python環境,它的安裝可以參考:python安裝以及版本檢測 其次我們還需要安裝一個python圖形化的庫PIL PIL的安裝,這里…

數據集

https://zhuanlan.zhihu.com/p/25138563轉載于:https://www.cnblogs.com/zhangbojiangfeng/p/7039725.html

常見的攻擊手段及其防御方式

本文簡單介紹幾種常見的攻擊手段及其防御方式 XSS(跨站腳本攻擊)CSRF&#xff08;跨站請求偽造&#xff09;SQL注入DDOSXSS 概念 全稱是跨站腳本攻擊&#xff08;Cross Site Scripting&#xff09;&#xff0c;指攻擊者在網頁中嵌入惡意腳本程序。案列 比如說我寫了一個博客網站…