亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Java設計模式和軟件工程之DesignPattern介紹

2019-11-18 12:17:34
字體:
來源:轉載
供稿:網友

  什么是Design Pattern...
  
  在OO Design中,reueable 是一個非常重要的組成部分。也就是說如何讓你的code能被其他的程序利用是design的要害部分!
  
  讓code reuseable有多種辦法,除了oo language本身的hirechay等特性外,把現實中的問題記錄下來,然后發表,可防止重復的開發過程。
  
  Design Pattern就是一些已被記錄的方法,并且有系統的描述。
  
  根據 Christopher Alexander “每個pattern描述了在特定環境下發生了很多次的問題,然后你便可以描述這些問題的共性并提供解決的辦法”
  
  這就好象磚頭一定是方的,這樣他便能很輕易地和其他磚頭一起被砌成房子。
  
  java在resuseable方面有突出的表現,如interface的引入,使很多在c++中曖昧的繼續關系得到有效的解決。應該來說,java語言的本身擁有很多OO的嫡系血統,整合了現代的編程方法。當然我們都了解有關
  implementation的缺陷使得它的應用受到很大限制。但從design的角度說,它的確是一種非凡的東西。這也是為什么我想用它來解釋pattern的原因。
  
  實例1:在sun java的native lib中,我們隨處可見design pattern的身影。比如在新的event model中,Listener 便是一種叫Observer的pattern(MFC 中的notification 也是出于其中)
  
  實例2:JFC UI種的plugable Look & Feel 結合了Abstract Factory 和Bridge Pattern。前者能產生一組widget factory,而后者則提供了建立
  
  在一致interface上具體的實現方法。
  
  當然在實際的開發中你可能碰到各種問題,假如你能把它們系統地記錄下來并提供實際的解決辦法,這就可能是一種新的pattern。但記住pattern是能解決一類問題的方法,而不是一個問題。所以對一類問題的共性歸類很重要。在以后我們會介紹如何來做這方面的工作。
  
  后:
  
  1.小弟的中文水平差的可以,那位仁兄能幫忙指正的話,在下感激不盡。
  
  2.做比說重要。
  
  3.多謝compiler的鼓勵,希望能共同努力,把這一系列寫完
  
  4.這里到底是不是java group? 怎么盡是些不著邊際的post.
  上一次我們主要介紹了什么是Design Pattern,作為一部分的補充,這次想討論一下記錄Design Pattern的格式和方法。
  
  雖然Design Pattern源自于Object Oriented Design的方法,但它又是完全基于實踐的。因此選擇何種語言及上下文的關系對與讀者至關重要。
  
  基本上每種Pattern都會有相應的UML(1)和Interactive Diagram(2),同時配以簡潔的示范代碼來表達作者在當時的想法。
  
  可以想象一種Pattern的應用面決定不止以某種特定的場景。打個比方,Composite Pattern這種建立于包含關系的object strUCture可以表達很多類事物,如桌面應用文件的結構,網絡中分布對象的集合等等,它并沒有局限于某類應用。
  
  而基于不同的實現語言,Pattern的實現也會很不一樣。我們以后會提到的Singleton在C++中的實現和Java中的實現有很大的區別。
  
  大致上每種Pattern都包含了一下幾個部分。
  
  Pattern Name: 名字
  
  PRoblem: 講述Pattern的來源及上下文關系。問題的種類可有很多種,有時我們可能想用objects來表達某種算法,而有時確是為了如何表達objects之間的結構。而且在一些情況下我們還要告訴讀者在碰到這個問題前,我們已經用何種方法解決了前因。
  
  The Solution:解決之道。包括用哪些元素來做Design,Element之間的關系,結構,調用的順序,變種等等。為了清析的表達一個Design,往往輔助以UML,Interactive Diagram,Code Sample等。因為Pattern 就象一種
  
  Tempelate,可以應用于不同的場合,所以Solution不應該是描述一中特定的設計。
  
  The Consequence:結果。這是最輕易被人忽視的一點。因為Design的需要Pattern并不往往是最有效率的方案,在一些情況下,我們犧牲很有效率的方案僅僅是為了讓別人能看懂我們的程序。(個人認為這很重要)所以我們一定要注明在那些地方我們做了妥協。并盡可能地預計所會產生的正面及負面效果。
  
  注:
  
  UML:Unified Modeling Language是解釋Objects靜態關系的一種圖表
  
  Interactive Diagram:描述objects之間的動態關系
  看著自己以前寫幾篇的Design Pattern文章,越看越喜歡.
  
  算了, 不管有沒有人看,寫下去再說!
  
  上幾次主要介紹了Design Pattern的基本概念,和文檔的
  
  格式. Design Pattern在現實的世界中共有23種標準的
  
  pattern. 最早出現在由Erich Gamma, Richard Helm,
  
  Ralph Johnson和John Vlissides編寫的"Design Patterns"
  
  一書. 由于此書一成為OO Design的標準參考書之一, 所以許多專家建議在實際開發中,Developers 應該用標準的pattern來相互交流, 以便于了解彼此的設計思想. Java的標準庫便運用此原則, 對于標準Pattern的擴展, 大多也有明確的出處(如Listener便源自于Observer).
  
  按照不同的應用原則, 標準Pattern 分為三個類別
  
  1. "Creational Patterns" 主要用于創建Objects, 典型
  
  有Factory Pattern.
  
  2. "Structural Patterns" 用于組織不同的objects并整合成復雜結構, 如 Adapter, Bridge 等
  
  3. "Behavioral Patterns" 主要描述了object和class間交互的方法, 它可以把一個十分復雜控制流分解成不同的部分,并交由不同的object處理. 如 Observer, Command等
  
  下面我將標準的Pattern列出:
  
  ==============
  
  Creational Patterns
  
  ==============
  
  * Abstract Factory
  
  * Builder
  
  * Factory Method
  
  * Prototype
  
  * Singleton
  
  ==============
  
  Structural Patterns
  
  ==============
  
  * Adapter
  
  * Bridge
  
  * Composite
  
  * Decorator
  
  * Facade
  
  * Flyweight
  
  * Proxy
  
  ==============
  
  Behavioral Patterns
  
  ==============
  
  * Chain Of Responsibility
  
  * Command
  
  * Interpreter
  
  * Iterator
  
  * Mediator
  
  * Memento
  
  * Observer
  
  * State
  
  * Strategy
  
  * Template Method
  
  * Visitor
  現在開始, 我將有選擇地介紹不同的Patterns
  
  名字:
  
  ====
  
  1. Factory Method, (可能是最常用的了. )
  
  問題:
  
  ====
  
  在一個Class繼續關系中, 在最頂層的抽象類定義了一組objects
  
  的關系. 每個object很可能屬于另一個抽象的繼續關系.而你
  
  得Classes 處于整個關系的中間層次, 你需要不同的Class包含不同產品.
  
  解決方法:
  
  =======
  
  參考一個簡單的實列: 在一個Model View Control的結構中,
  
  抽象的Controller需要有 Model 和 View的 Interface.
  
  Controller的子類則需要具體的 model 和 view. 這時我們就可
  
  以在 AbstractController中定義
  
  Class AbstractController {
  
  abstract protected Model createModel ();
  
  abstract protected View createView();
  
  }
  
  每個controller的子類只需要overiden這兩個method, 就可以獲得
  
  一個適合它的Model和View. 如在ConcreteController中
  
  Class ConcreteController {
  
  protected Model createModel(){
  
  return new ConcreteModel(this);
  
  }
  
  protected View createView(){
  
  return new ConcreteView(this);
  
  }
  
  }
  
  這兩個method就叫 "Factory Method"
  
  其它擴展:
  
  ========
  
  在MVC的列子中, factory method應用于hireachy中, 我們還可以在一個單一的class中根據不同的要求創建不同的產品. 設想有一中Java的component可以象 Xwindow 一樣, 程序的 presentation 可以在本地的host上,也可以在remote host上. 這就需要有兩種Graphics來幫助component的 rendering. 一種是LocalGraphics, 一種是RemoteGraphics. 它們都是
  
  java.awt.Graphic的子類. 那么我們的這種非凡的component就需要overiden
  Component中getGraphics()這個method.
  
  Class DistComponent extends Component
  
  {
  
  .......
  
  protected Graphics getGraphics() {
  
  if ( isRenderingRemote())
  
  return new RemoteGraphics();
  
  else
  
  return new LocalGraphics();
  
  }
  
  ......
  
  }
  
  在此getGraphics就是Factory Method;

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
有码中文亚洲精品| 日韩精品视频在线播放| 最近的2019中文字幕免费一页| 欧美激情中文字幕乱码免费| 久久久久国产精品免费| 日本乱人伦a精品| 91精品啪aⅴ在线观看国产| 亚洲成色777777在线观看影院| 亚洲国产小视频在线观看| 日韩在线视频播放| 国产欧美在线观看| 国产日韩在线精品av| 热久久免费视频精品| 久久影院模特热| 久久青草福利网站| 欧美一级淫片丝袜脚交| 韩国美女主播一区| 国模gogo一区二区大胆私拍| 日韩视频在线一区| 亚洲人成电影在线观看天堂色| 国产亚洲精品美女久久久| 色婷婷成人综合| 上原亚衣av一区二区三区| 亚洲成av人影院在线观看| 亚洲人成电影网站色xx| 欧美精品制服第一页| 久久福利网址导航| 国产精品一区二区三区成人| 国产97在线|日韩| 国产精品白嫩初高中害羞小美女| 色偷偷偷亚洲综合网另类| 国产精品久久久久久久久久小说| 欧美色欧美亚洲高清在线视频| 一区二区三区在线播放欧美| 国产91精品久久久久久| 国产欧美日韩最新| 国产三级精品网站| 亚洲男人av在线| 国产精品美女视频网站| 日韩中文字在线| 日韩有码在线电影| 亚洲美女中文字幕| 大胆欧美人体视频| 日韩精品视频在线观看免费| 亚洲欧美国产精品va在线观看| 亚洲美女自拍视频| 欧美夜福利tv在线| 在线观看免费高清视频97| 色综合久久天天综线观看| 亚洲第一视频网| 国产欧美最新羞羞视频在线观看| 中文字幕亚洲欧美日韩在线不卡| 亚洲精品国产suv| 这里只有视频精品| 国产丝袜高跟一区| 亚洲日韩第一页| 九九热精品视频在线播放| 欧美日韩午夜剧场| 欧美电影在线免费观看网站| 国模精品系列视频| 韩国19禁主播vip福利视频| 成人av电影天堂| 国外成人在线直播| 亚洲欧美日韩视频一区| 亚洲欧美一区二区精品久久久| 欧美激情国产精品| 亚洲欧美日韩中文视频| 97视频在线观看免费| 97精品国产97久久久久久春色| 亚洲男人的天堂在线| 国产精品久久久91| 日韩av大片免费看| 久久精品人人爽| 国产精品91久久久久久| 亚洲a级在线观看| 亚洲精品女av网站| 欧美电影免费在线观看| 国产在线日韩在线| 91久久国产综合久久91精品网站| 国产精品白丝jk喷水视频一区| 亚洲成人精品久久久| www.久久久久久.com| 668精品在线视频| 国产精品69精品一区二区三区| 国内精品国产三级国产在线专| 国产精品久久久久久av福利软件| 亚洲a级在线播放观看| 日本中文字幕成人| 欧美亚洲成人网| 亚洲精品国产精品国自产观看浪潮| 久久躁日日躁aaaaxxxx| 国产视频精品自拍| 最好看的2019年中文视频| 91久久国产精品91久久性色| 国产精品热视频| 国产91色在线免费| 国产成人福利夜色影视| 欧美成人免费小视频| 国内精品在线一区| 日韩中文有码在线视频| 91免费综合在线| 日韩在线观看免费高清完整版| 成人精品久久久| 亚洲福利影片在线| 欧美日韩国产一中文字不卡| 久久视频中文字幕| 国产精品亚发布| 中文欧美日本在线资源| 国产精品视频精品视频| 超碰精品一区二区三区乱码| 亚洲欧美在线看| 亚洲精品白浆高清久久久久久| 国产精品91视频| 欧洲亚洲免费视频| 国产日韩欧美视频| 欧日韩不卡在线视频| 一区二区三区黄色| 最近免费中文字幕视频2019| 97超级碰碰碰久久久| 亚洲加勒比久久88色综合| 国产精品直播网红| 日韩av大片免费看| 欧美韩国理论所午夜片917电影| 97免费在线视频| 国产精品日韩精品| 久久国产加勒比精品无码| 日韩一区二区三区国产| 欧美午夜精品伦理| 亚洲欧美国产日韩中文字幕| 中文字幕免费精品一区高清| 国产精品视频永久免费播放| 亚洲最大福利网| 91黑丝高跟在线| 精品亚洲男同gayvideo网站| 亚洲国产精品久久精品怡红院| 欧美裸身视频免费观看| 久久久噜久噜久久综合| 国产日韩在线观看av| 久久久国产精品x99av| 一区二区欧美日韩视频| 国产精品看片资源| 欧美福利视频在线观看| 亚洲国产精品久久久久秋霞蜜臀| 日韩精品免费看| 成人性生交大片免费看视频直播| 日韩av男人的天堂| 成人两性免费视频| 欧美日韩国产综合视频在线观看中文| 庆余年2免费日韩剧观看大牛| 97精品久久久中文字幕免费| 影音先锋欧美精品| 亚洲欧洲美洲在线综合| 一本大道香蕉久在线播放29| 亚洲欧洲在线播放| 精品动漫一区二区| 中文字幕精品在线视频| 91精品国产自产在线观看永久| 欧美性xxxx极品高清hd直播| 亚洲www在线观看| 国产精品视频99| 亚洲国产又黄又爽女人高潮的| 日韩精品亚洲元码| 欧美日韩国产va另类| 一区二区在线免费视频|