`
chian_xxp
  • 浏览: 97075 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

设计模式汇总

阅读更多

java設計模式----abstract Factory模式與Factory method模式:
任何多態的實現都離不開Factory方法.
----------------------------------------

java設計模式---bridge模式:
1 bridge模式
    要解決的一個問題是:接口與平臺的無關性.將接口與實現分離,然後具體的實現與平臺相關從而實現接口與實現分離,
    接口與實現並不存在著任何的extends或是implements意義上的實現.它們只是通過在接口中引用實現類來建立一種關係.這正是橋模式的字面意義.它們有各自的對象體系.
    接口中包含有一個實現的引用.所有在接口中的操作都委託給實現引用來完成.實現的具體賦值則由Factory模式來決定.
    這里的接口是指抽象類,允許它有方法體,但不允許實例化.
2 各自的對象體系:
    接口的對象體系:在這個體系中,任何接口的子類,也全部包含有一個對實現對象體系中頂級類的引用.任何的子類,都與平臺無關,代表著著不變的部分.例如:人是一個頂級接口.具備吃飯 工作的接口.而警察 公務員都是人的一個字類,它們也都具有同樣的接口.但是中國警察和美國的警察在吃飯和工作上的實現是不同的.是變化的.
    實現的對象體系:在這個體系中,任何接口的子類,才真正跟平臺(實際的規則)有關.結合上面的中國警察和美國警察,中國警察吃米飯,美國警察吃漢堡.中國警察工作就是泡茶,美國警察是巡邏.
    對於客戶端而言,只需要說聲"工作",那麼在實際的使用中,傳入具體的實現體系中的子類,那麼就可以實現動態的變化了.
3 其實也相當於代理模式.只是各自的側重點不同,于是使用的方式也不同.

--------------------------------------------------

java模式------decorator模式
1  装饰模式:一般情况中,我们只能控制类的接口,而无法控制一个对象的接口。也即是说,我们可以很好地控制一个类的接口,于是这个类的实例只能提供类所定义的接口功能。无法提供一些增加额外的功能,但这个功能又不是每个实例都需要。我们需要精确到实例的接口控制。
2 我们可以定义一个超级(类)接口,它定义一切基本的功能,任何一个实例都包含的功能。例如定义一个超级经理类,都会具有管理本部门的接口,但是人事部经理有招聘的接口,而技术部经理可能有领导团队开发的接口,销售经理有接见客户的接口,管理部经理有厂区绿化的功能,我们可以针对每个部门经理定义一个经理类的子类来实现各自的功能,而小公司的经理,经常是人事经理也是技术部经理。那我们是否还要定义一个继承人事经理和技术经理的子类。那如果一个经理是技术部经理又是管理经理呢,再定义一个继承自技术经理和管理经理的经理类。这样下去,只要一个公司有多个部门经理,就可能需要定义!n个类。当n=10时,那么理论是要定义的类就是100个。
3 我们只定义一个超级经理类,它具有所有经理的共同接口。再将每个部门经理特有的功能也作成一个“功能经理”类,它也具有和超级经理类一样的接口。当某个经理需要某种功能的时候,我们定义一个以基本经理为构造参数的“功能经理”实例,这个经理就具有了除基本经理的功能外附加的功能,如果这个经理还需要增加功能,那么将这个经理作为所加“功能经理”类的构造参数,那么它例增加了这个功能。于此下去,任何的经理需要增加一项新功能时,就不需要再定义一个新类。
---------------------------------------

java设计模式----proxy模式:
1 代理模式:主要是为了实现对对象访问的控制。至于为什么要对对象的访问进行控制,可以为了是让代码更为简洁,也可以是为了节省资源开销,等等一切值得这么做的原因。
2 角色:客户对象/实际对象/代理对象。代理对象必须与实际对象具有相同的接口,这样才能去代理。
3 环节:客户的操作中可能需要访问实际对象的一个接口,但也有可能不访问。创建这样一个实际对象花销很大,当然不能在客户类实例化的时候就实例化实际对象,而是提供一个代理对象。只有在实际需要访问的时候,通过代理对象来访问实际对象提供的功能。

------------------------------------------------

java設計模式----factory模式:
1  factory模式:固名思義,它是一種工廠,用來創建產品.
    產品:------>具體產品
    工廠:------->具體工廠
    客戶:在使用factory模式中,要將客戶獨立出來.想想如果沒有客戶對工廠說,我要某某類型的產品,工廠怎麼知道生產哪種產品.
客戶向工廠下訂單,說要生產某種類型的產品.工廠就指將訂單指向具體的工廠,生產出具體的產品.交互給客戶.
3  說明:
    其實這個並不是在運行時期進行限定的.也是在開發的時候就已經限定.只是在擴展上有優勢.

--------------------------------------------

java基礎----接口(多態)與繼承
多態:接口是操作的集合,這些操作代表著一個抽象物體的操作集合.具體的實現是在不同的狀態下是以不同的方式來響應請求.描述的是同一個對象在不同的狀態下對相同的請求所作出的不同的反應.例如:燈的開操作,在充電的情況下,它是會亮的.而在斷電的情況下,它是不會亮的.所有的燈都具有這樣的特性.
繼承:這涉及到多個抽象物體,只是這些物體之間存在著層次上的關聯,而且具有一些共性.是為了代碼復用
多態強調的是一個對象不同的狀態下的不同響應.而繼承強調的是存在父子關係的類相同或是特有的行為響應.
多態與繼承也無法絕對.
------------------------------------------

java設計模式-----state模式與Strategy模式
1 state模式與接口編程的區別:
    接口編程: 是state模式使用的基礎.
    state模式:將一個對象中和狀態有關的操作通過封裝成接口來實現,將狀態的判斷從在對象中轉移到對象外.所有與狀態相關的動作都交由接口來處理.這里體現了將變化的部分與不變的部分分隔開來的思想.
    對象中,對接口的引用其實例化是通過動態加載機制來實現的.
    state模式適用於多個狀態下的情況.
2 對象狀態改變:
    由誰來改變
3 Strategy模式與State模式的思想是一致的.將對象變化的部分分離,封裝成一個接口,具體的實現由接口的子類來完成.在對象中,所有要使用到變化部分的操作,都交由接口來實現.
4 strategy模式與State模式的區別:它們所針對的變化部分,Strategy模式是在項目運行期間發生變化.而State模式是在不同的外在環境下而變化.(有點遷強)
-----------------------------------------

java設計模式----single call模式
single Call模式:當一個類沒有單獨存在的必要,而且也不允許單獨存在,只能於依附於另外一個類才存在的情況下.應當使用single call模式.通過將類的構造函數私有化和調用類的可否實例組成類的變量來進行判定.組成類的實例通過靜態方式來實現,靜態方法中需要傳入整體類的實例參數.
sington 模式:表明一個類只能被實例化一次,但不限定使用者是誰.所有的使用者只能使用這一個實例.
------------------------------------------

java---動態加載與反射機制
1 java中設計模式,很大一部分離不開多態,而多態離不開動態加載及反射機制.

-------------------------------------------

java---jdbc调用数据库存储过程
调用存储过程,可以利用数据库本身和自定义的存储过程来获得我们所要的数据。
返回的数据根据存储过程本身来决定。存储过程的有无带参数及有无返回变量的值。 将影响jdbc调用存储过程的形式。
1 如果存储过程没有参数,可以使用普通的statement.executeQuery("{call proc_xx}")来执行。并获得ResultSet。任何有参数的存储过程调用,必须调用preparedCall来执行。
2 如果存储过程有参数,但是没有通过return xxx 的形式返回。直接用prepareCall.executeQuery("{ call proc_aaa(?,?...)}") prepareCall.getType(index)就可以得到返回值了。如果有return xxx形式的返回,则用preparedCall.executeQuery("{? = call proc_xxx(?,?...)}"). 也是通过prepareCall.getType(index);
不论是以return 形式返回的,还是以参数形式返回的。都必须注册返回类型。prepareCall.registerOutParameter(index,Types.xxx);
3 说明:prepareCall.getType(index) 实例是:prepareCall.getInt(1)形式。jdbc调用存储过程与一般的增删改查相比,以"{[?=] call"开始,以"}'结束。
-----------------------------------------

數據庫連接:
其實是數據庫服務器與應用服務器之間的一個socket connection. 兩個服務器之間交換登入信息,然後記錄聯機日志,再為些連接分配進程和系統資源.
------------------------------------------

影響系統性能可能有複雜的業務邏輯及對資源的管理.如果一個資源需要頻繁的使用而且,讀寫它所耗費的系統資源羅多的話,它比較適合用緩衝的形式保存在系統中.而緩衝的形式,就是用靜態.
1 不僅一個數據庫連接會佔用內存資源.而一次對數據庫的連接和關閉也會佔用系統的cpu資源.這就是數據庫連接彩連接池管理的目的所在.
-----------------------------------

使用設計模式開發原則及解耦合.它們的目的就是實現:
1 業務層清晰明了.
2 各個層之間解耦合.及廣泛的適用性.
------------------------

java設計模式:
總綱:設計模式的目的是解耦合和適應多變.所有的設計模式都屬於三類:創建型設計模式 組合型設計模式 行為型設計模式.我們是這樣分類的學習,當然就應當避免在使用的時候亂了.例如在行為型的時候,我們來使用factory method模式.
必須明白的一點是:所有的設計模式都是基於java的三個特性.封裝 繼承 多態這三種技術.
一個系統(項目),各個之間的性能指標是相互影響的.例如:為了獲得更大的擴展性而使用factory method模式,會使系統中的類變多.代碼也將變多.主要是看系統的實際情況在各個性能之間進行取捨.
1 factory method模式:為接口和實現提供橋接.

---------------------------

java開發原則:
1 開閉原則:對擴展開放,對修改關閉.

-------------------------------

高內聚與低耦合:
高內聚應當是指單個的一個實體,它的功能很專一而全面.
耦合是指多個實體之間,減少因為一個實體變化而引起另外的實體也不得不變化的程度.
解耦合:即包括系統架構上的解耦合也技術層面上的耦合.當然也有其它的領域中的解耦合.

----------------------

在java編程中,創建一個新對象,需要處理器時間.創建好後需要佔用一定的內在空間.優秀的程序員應當在這兩者之間來取捨.決定是頻繁創建和銷毀對象還是將創建好的一個對象保存在內存中.以取得一個最好的綜合效果.

------------------------------------------------

靜態類只能是內部類,不能是外部類

------------------------------

運行java的程序中,往往需要設置各種環境變量.在環境變量的設置中,請注意空格所帶來的影響.
曾經在設置catalina_home時,值的最後包含有一個空格.一直無法通過程序的運行.
-----------------------------------------

面對對象設計的基本原則:
封裝:通過權限的控制,將一個接口或是類的內部實現完全隱藏起來,只需要向外部提供信息表明,接口和類能實現哪些功能.而不用將具體的實現暴露.
        通過這個特性,面對接口編程就變得非常之有用.任何實現都可以由子類來實現.
                如果一個類或是接口,它本身變化的部分很少.就沒有必要使用接口.而應當視為一個實體類.類和接口真正強大的地方在於業務邏輯的處理.因為業務邏輯發生                    變化的可能性比較高也比較頻繁.而一個實體類的變化則比較小.這也符合"將變化的與不變的分開來"的原則.
繼承:為了提高代碼的復用率.
多態:為了使應用程序更具備擴展性和靈活性.

 

分享到:
评论

相关推荐

    设计模式汇总_圣思园Java版

    "设计模式汇总_圣思园Java版"是一个专门针对Java程序员的资源集合,它包含了UML类图、Java源码和PDF文档,便于学习和理解各种设计模式。 1. **UML类图**:统一建模语言(UML)是一种图形化表示软件系统的方法,它...

    设计模式资料汇总

    此资源包括以下资料: <br>学习GoF设计模式的重要性.txt 设计模式逐个解析.rar 23种设计模式的实现(Java 版).rar DAO设计模式.rar C#设计模式.pdf 新版设计模式手册[C#].pdf JAVA设计模式...

    LabVIEW 设计模式汇总

    在LabVIEW编程中,设计模式是一套预先定义好的结构和代码模板,用于解决特定的编程问题。设计模式能够帮助开发者提高代码的可重用性、可维护性以及可扩展性,同时还能降低错误的发生几率。 1. 标准状态机: 标准...

    设计模式汇总(含思维导图)

    设计模式是一套被反复使用、多数人知晓、经过分类编目、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。设计模式通常包含以下几个基本要素:模式名称、问题、解决方案...

    C语言-设计模式汇总,包含23中常见设计模式,利用C语言实现;

    在软件开发领域,设计模式是一种经过验证的、通用的解决方案,用于解决常见的设计问题。C语言,虽然通常被认为是一门面向过程的编程语言,但在面向对象的设计思想下,同样可以应用设计模式。以下是对C语言中设计模式...

    设计模式汇总1(多多支持)

    设计模式是软件工程中的一种最佳实践,用于解决在软件开发过程中常见的问题,提供了一套可重用的解决方案。这些模式都是经验丰富的软件开发者在长期实践中总结出来的,它们可以帮助我们写出更高质量、更具可维护性和...

    java 23种设计模式汇总,以及用java描述的23种设计模式Demo源码下载

    设计模式是软件工程中的一种最佳实践,用于解决在软件开发过程中常见的问题,提供了一套可重用的解决方案。Java作为一款广泛应用的编程语言,其在设计模式上的应用广泛且深入。这里我们主要讨论的是23种经典的GOF...

    C# 23种设计模式汇总+demo

    代码详细说明设计模式的主要重点,项目中常用到的设计模式,适合中级程序员研究。

    LabVIEW设计模式汇总.doc

    本文档汇总了LabVIEW中常见的两种设计模式:条件结构和标准状态机。 1. **条件结构**:条件结构在LabVIEW中扮演着逻辑判断的角色,它允许根据不同的条件执行不同的代码路径。这种模式通常用于决策流程,如根据输入...

    Java设计模式面试题汇总

    Java设计模式面试题汇总 本文将对Java设计模式面试题进行总结,涵盖软件设计原则、设计模式的定义、分类、常见模式等内容。 软件设计原则: 软件设计原则是指在软件设计中需要遵守的一些规则和原则,这些原则可以...

    23种设计模式汇总

    个人搜集整理的23种设计模式,已经认真学习过,很好,与大家共享!

    C# 23种设计模式汇总

    在IT领域,设计模式是解决常见软件设计问题的可复用解决方案,它们提供了一种标准的语言来描述在特定上下文中如何解决设计问题。对于C#开发者而言,掌握23种经典设计模式是提升代码质量和软件架构能力的重要途径。...

    23种经典设计模式UML类图汇总.chm_23种经典设计模式UML类图汇总.chm_uml_

    《23种经典设计模式UML类图汇总》是一个关于设计模式与UML结合使用的参考资料,主要涵盖了GOF(GoF, Gamma, Helm, Johnson, Vlissides四位作者)提出的23种设计模式。 这23种设计模式可以分为三大类别:创建型模式...

    java设计模式资料汇总

    这里提供的资料汇总包含了多种资源,可以帮助我们深入理解Java设计模式。 首先,"Java设计模式-图解-附代码.doc"文档可能包含了一些常见的设计模式,如单例模式、工厂模式、观察者模式等,通过图文并茂的方式进行...

    23种经典设计模式(疯狂Java联盟版)

    并整理二十三种设计模式的理论部分,综合汇总成这份Java设计模式(疯狂Java联盟版),希望对大家有所帮助。 本份帮助文档主要是为了向读者介绍二十三种设计模式,包括模式的描述,适用性,模式的组成部分,并附带...

    Head First设计模式和HeadFirst in java 源码以及23种设计模式关系图

    《23种经典设计模式UML类图汇总.chm》文件很可能包含了这23种设计模式的统一建模语言(UML)类图,UML是一种图形化的表示方式,用于可视化系统的设计和结构,包括类、接口、协作和用例等元素。通过类图,我们可以...

    设计模式精解-GoF 23种设计模式解析

    ### 设计模式精解——GoF 23种设计模式解析 #### 0. 引言 ##### 0.1 设计模式解析(总序) 设计模式是软件工程领域的一个重要概念,它代表着一系列被广泛接受的解决方案,用于解决特定类型的软件设计问题。通过...

    深入浅出java设计模式(高清中文PDF)

    在深入浅出Java设计模式的高清中文PDF文件中,首先以一个生活化的例子引出了工厂模式的概念,介绍了工厂模式在面向对象编程中的重要性和实用性。文档详细讲解了20多种Java设计模式,并且在讲解的过程中包含了丰富的...

    设计模式-java实现代码汇总

    设计模式是软件工程中的一种最佳实践,用于解决常见的设计问题并提供可重用的解决方案。在Java编程中,设计模式的应用极大地提高了代码的可读性、可维护性和可扩展性。根据《设计模式:可复用面向对象软件的基础》一...

    23中设计模式学习汇总

    ### 23种设计模式学习汇总 #### 一、创建型设计模式 ##### 1. **抽象工厂模式(Abstract Factory)** - **定义**:抽象工厂模式提供了一个接口,用于创建一系列相关或相互依赖的对象,而无需指定它们具体的类。 - ...

Global site tag (gtag.js) - Google Analytics