日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

6月24 面向对象的设计原则-----工厂模式和单列模式

發(fā)布時間:2023/12/1 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 6月24 面向对象的设计原则-----工厂模式和单列模式 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

工廠模式:

工廠模式就是專門負責將大量有共同接口的類實例化,而且不必事先知道每次是要實例化哪一個類的模式。它定義一個用于創(chuàng)建對象的接口,由子類決定實例化哪一個類。

工廠模式相當于創(chuàng)建實例對象的new,經(jīng)常要根據(jù)類Class生成實例對象,如A a=new A() 工廠模式也是用來創(chuàng)建實例對象的,工廠模式是現(xiàn)今最常用的模式,在Java程序系統(tǒng)中隨處可見。

<?php class YunSuan {public $a;public $b; //寫空的操作方法public function Suan(){ } } //面向操作的繼承之前學過(可擴展性比較高) class Jia extends YunSuan {public function Suan(){return $this->a+$this->b; } }//工廠模式: //工廠類:生產對象 class GongChang {//不需要造對象直接就可以調用static function ShengChan($ysf){switch($ysf){case "+":return new Jia();break;case "-":return new Jian();break; }} }$jia = GongChang::ShengChan("+"); $jia->a = 10; $jia->b = 19; var_dump($jia); echo $jia->Suan();

使用工廠模式的好處是:使用類的人不必知道做的是什么類,只需要知道工廠類,然后賦予相應的參數(shù),會自動造出相應的對象,然后調用相應的方法即可。為防止類里面有很多參數(shù)容易記混可以使用工廠模式,傳入易懂得參數(shù)調用相應的方法

?

單例模式:

單例模式是一種常用的軟件設計模式。在它的核心結構中只包含一個被稱為單例類的特殊類。通過單例模式可以保證系統(tǒng)中一個類只有一個實例而且該實例易于外界訪問,從而方便

對實例個數(shù)的控制并節(jié)約系統(tǒng)資源。如果希望在系統(tǒng)中某個類的對象只能存在一個,單例模式是最好的解決方案。顯然單例模式的要點有三個:一是某個類只能有一個實例;二是它

必須自行創(chuàng)建這個實例;三是它必須自行向整個系統(tǒng)提供這個實例。

我們的類在造對象的時候只允許用戶造一個對象,多了不可以。像之前的數(shù)據(jù)訪問類DBDA,每次在使用的時候都需要new

特別注意以下的注釋部分:

??

<?php class DBDA {//連接數(shù)據(jù)庫的類讓他只能造一個對象出來,在不加任何控制的時候可以造很多的類出來//在造對象的時候會調用構造的方法,//把構造方法變成私有的就可以可以控制住public static $dx;//用來存儲對象//把構造做為私有的private function __construct(){} //生成對象的方法//為了使該方法能夠較簡單的被調用因此做成靜態(tài)的static function DuiXiang(){//因為存儲的對象$dx是靜態(tài)的因此使用selfif(empty(self::$dx)){self::$dx = new DBDA();}return self::$dx;}}//可以控制住不讓他隨便new但是又有新的問題就是現(xiàn)在一個對象都造不出來了 //$db = new DBDA();//下面是不會報錯的,單例模式 $db = DBDA::DuiXiang();

單例模式的目的是將類只能造一個對象出來

單例模式的主要方法是:將構造 變成私有的-->做一個靜態(tài)的生成對象的方法-->造一個靜態(tài)的存儲對象-->return 靜態(tài)的對象

面向對象設計的原則

OOD基本上有6大原則,而實際上都是互補的,也就是說一些原則需要利用另一些原則來實現(xiàn)自己。6大原則如下:

1) Open-Close Principle(OCP),開-閉原則,講的是設計要對擴展有好的支持,而對修改要嚴格限制。這是最重要也是最為抽象的原則,基本上我們所說的Reusable Software既是基于此原則而開發(fā)的。其他的原則也是對它的實現(xiàn)提供了路徑。

2) Liskov Substituition Principle(LSP),里氏代換原則,很嚴格的原則,規(guī)則是“子類必須能夠替換基類,否則不應當設計為其子類。”也就是說,子類只能去擴展基類,而不是隱藏或覆蓋基類。


3) Dependence Inversion Principle(DIP),依賴倒換原則,“設計要依賴于抽象而不是具體化”。換句話說就是設計的時候我們要用抽象來思考,而不是一上來就開始劃分我需要哪些哪些類,因為這些是具體。這樣做有什么好處呢?人的思維本身實際上就是很抽象的,我們分析問題的時候不是一下子就考慮到細節(jié),而是很抽象的將整個問題都構思出來,所以面向抽象設計是符合人的思維的。另外這個原則會很好的支持OCP,面向抽象的設計使我們能夠不必太多依賴于實現(xiàn),這樣擴展就成為了可能,這個原則也是另一篇文章《Design by Contract》的基石。

4) Interface Segregation Principle(ISP),接口隔離原則,“將大的接口打散成多個小接口”,這樣做的好處很明顯,我不知道有沒有必要再繼續(xù)描述了,為了節(jié)省篇幅,實際上我對這些原則只是做了一個小總結,如果有需要更深入了解的話推薦看《Java與模式》,MS MVP的一:本巨作!^_^

5) 單一職責:一個類的功能盡量單一,降低耦合

6) Law of Demeter or Least Knowlegde Principle(LoD or LKP),迪米特法則或最少知識原則,這個原則首次在Demeter系統(tǒng)中得到正式運用,所以定義為迪米特法則。它講的是“一個對象應當盡可能少的去了解其他對象”。也就是又一個關于如何松耦合(Loosely-Coupled)的法則。

好了,以上是6大原則(或法則)的介紹,對這些原則的深入研究正是如何得到設計模式的道路。在進行了深入了解后我們就可以開始看看設計模式了,設計模式正是對這些法則的應用,著名的設計模式有四人幫(Gang of Four,GoF)的23個模式,除此之外還有很多其他的一些著名模式,大家可以慢慢研究,如果能自己產出一兩個模式的話那就太好了,證明你也是高手了!^_^

轉載于:https://www.cnblogs.com/Duriyya/p/5616827.html

總結

以上是生活随笔為你收集整理的6月24 面向对象的设计原则-----工厂模式和单列模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。