亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

編程設(shè)計模式

系統(tǒng) 1910 0
轉(zhuǎn)自: http://blog.csdn.net/longronglin/article/details/1454315
創(chuàng)建模式 結(jié)構(gòu)模式 行為模式
創(chuàng)建模式: 對類的實(shí)例化過程的抽象。一些系統(tǒng)在創(chuàng)建對象時,需要動態(tài)地決定怎樣創(chuàng)建對象,創(chuàng)建哪些對象,以及如何組合和表示這些對象。創(chuàng)建模式描述了怎樣構(gòu)造和封裝這些動態(tài)的決定。包含類的創(chuàng)建模式和對象的創(chuàng)建模式。
結(jié)構(gòu)模式: 描述如何將類或?qū)ο蠼Y(jié)合在一起形成更大的結(jié)構(gòu)。分為類的結(jié)構(gòu)模式和對象的結(jié)構(gòu)模式。類的結(jié)構(gòu)模式使用繼承把類,接口等組合在一起,以形成更大的結(jié)構(gòu)。類的結(jié)構(gòu)模式是靜態(tài)的。對象的結(jié)構(gòu)模式描述怎樣把各種不同類型的對象組合在一起,以實(shí)現(xiàn)新的功能的方法。對象的結(jié)構(gòu)模式是動態(tài)的。
行為模式: 對在不同的對象之間劃分責(zé)任和算法的抽象化。不僅僅是關(guān)于類和對象的,并是關(guān)于他們之間的相互作用。類的行為模式使用繼承關(guān)系在幾個類之間分配行為。對象的行為模式則使用對象的聚合來分配行為。
一 : 單例模式(Singleton)
單例模式 :Singleton的作用是保證在應(yīng)用程序中,一個類Class只有一個實(shí)例存在。并提供全局訪問。
結(jié)構(gòu):
賬本類:1 單一實(shí)例 2 給多個對象共享 3 自己創(chuàng)建
網(wǎng)頁計數(shù)器
public class ?Lazy Singleton
{
?????private static LazySingleton newInstance?= null;
? private LazySingleton ()
{
}
public static synchronized ?LazySingleton getInstance ()
{
???????????????if (newInstance == null)
{
????????????????newInstance = new LazySingleton ();
????????? }
??????????return newInstance;
}
}
singleton
限制了實(shí)例個數(shù),有利于gc的回收。
二: 策略模式(Strategy) ??
策略模式:策略模式針對一組算法,將每一個算法封裝到具有共同接口的獨(dú)立的類中,從而使得它們可以相互替換。策略模式使得算法可以在不影響到客戶端的情況下發(fā)生變化。策略模式把行為和環(huán)境分開。環(huán)境類負(fù)責(zé)維持和查詢行為類,各種算法在具體的策略類中提供。由于算法和環(huán)境獨(dú)立開來,算法的增減,修改都不會影響到環(huán)境和客戶端。
結(jié)構(gòu):
使用QQ泡MM時使用外掛 ?客戶端 :ME?抽象類: 外掛 具體: 策略(圖片,笑話,名人名言)
public interface Strategy {
//策略方法 //
? ? public abstract double method();
}
public class Strategy1 implements Strategy {
? ? ? @Override
? ? ? public void method() {
? ? ? ? ?System.out.println(this.getClass().getName() + "的方法");
?
? ? ? }
}
public class Strategy2 implements Strategy {?
? ? @Override
?
? ? public void method() {?
? ? ? ?System.out.println(this.getClass().getName() + "的方法");
? ? }
}
public class Context {
//上下文類 //
? ? ? private Strategy mstrategy;
? ? ? public Context(Strategy strategy) {
? ? ? ? ? ? this.mstrategy = strategy;
? ? ? }
?//策略方法 //
? ? ?public void method() {
? ? ? ? this.mstrategy.method();
? ? ?}
}
主類
public static void main(String[] args) {
? ? ? Context context = new Context(new Strategy1());
? ? ? context.method();// 執(zhí)行算法1
? ? ? context = new Context(new Strategy2());
? ? ? context.method();// 執(zhí)行算法2
}
三:原型模式(Prototype)
原型模式:通過給出一個原型對象來指明所要創(chuàng)建的對象的類型,然后用復(fù)制這個原型對象的方法創(chuàng)建出更多同類型的對象。原始模型模式允許動態(tài)的增加或減少產(chǎn)品類,產(chǎn)品類不需要非得有任何事先確定的等級結(jié)構(gòu),原始模型模式適用于任何的等級結(jié)構(gòu)。缺點(diǎn)是每一個類都必須配備一個克隆方法
結(jié)構(gòu):

實(shí)例一:淺拷貝
public class Prototype implements Cloneable {
?private String name;

?public String getName() {
??return name;
?}

?public void setName(String name) {
??this.name = name;
?}

?public Object clone() {
??try {
???return super.clone();
??} catch (CloneNotSupportedException e) {???
???e.printStackTrace();
???return null;
??}
?}?
?
}

public class TestMain {

?public static void main(String[] args) {
??testPrototype();
?}
?
?private static void testPrototype(){
??Prototype pro = new Prototype();
??pro.setName("original object");
??Prototype pro1 = (Prototype)pro.clone();
??pro.setName("changed object1");
??
??System.out.println("original object:" + pro.getName());
??System.out.println("cloned object:" + pro1.getName());
??
?}

}
結(jié)果:
original object:changed object1
cloned object:original object

?

四:門面模式(Fa?ade)
門面模式:外部與一個子系統(tǒng)的通信必須通過一個統(tǒng)一的門面對象進(jìn)行。門面模式提供一個高層次的接口,使得子系統(tǒng)更易于使用,減少復(fù)雜性。每一個子系統(tǒng)只有一個門面類,而且此門面類只有一個實(shí)例,也就是說它是一個單例模式。但整個系統(tǒng)可以有多個門面類。
?

                    
                      public
                    
                    
                      class
                    
                    
                       ModuleA {
    
                    
                    
                      //
                    
                    
                      示意方法
                    
                    
                      public
                    
                    
                      void
                    
                    
                       testA(){
        System.out.println(
                    
                    "調(diào)用ModuleA中的testA方法"
                    
                      );
    }
}
                    
                  
                    
                      public
                    
                    
                      class
                    
                    
                       ModuleB {
    
                    
                    
                      //
                    
                    
                      示意方法
                    
                    
                      public
                    
                    
                      void
                    
                    
                       testB(){
        System.out.println(
                    
                    "調(diào)用ModuleB中的testB方法"
                    
                      );
    }
}
                    
                  
                    
                      public
                    
                    
                      class
                    
                    
                       ModuleC {
    
                    
                    
                      //
                    
                    
                      示意方法
                    
                    
                      public
                    
                    
                      void
                    
                    
                       testC(){
        System.out.println(
                    
                    "調(diào)用ModuleC中的testC方法"
                    
                      );
    }
}
                    
                  

  門面角色類:

                    
                      public
                    
                    
                      class
                    
                    
                       Facade {
    
                    
                    
                      //
                    
                    
                      示意方法,滿足客戶端需要的功能
                    
                    
                      public
                    
                    
                      void
                    
                    
                       test(){
        ModuleA a 
                    
                    = 
                    
                      new
                    
                    
                       ModuleA();
        a.testA();
        ModuleB b 
                    
                    = 
                    
                      new
                    
                    
                       ModuleB();
        b.testB();
        ModuleC c 
                    
                    = 
                    
                      new
                    
                    
                       ModuleC();
        c.testC();
    }
}
                    
                  
五: 裝飾模式(DECORATOR)
裝飾模式:裝飾模式以對客戶端透明的方式擴(kuò)展對象的功能,是繼承關(guān)系的一個替代方案,提供比繼承更多的靈活性。動態(tài)給一個對象增加功能,這些功能可以再動態(tài)的撤消。增加由一些基本功能的排列組合而產(chǎn)生的非常大量的功能。
使用Decorator的理由是:這些功能需要由用戶動態(tài)決定加入的方式和時機(jī).Decorator提供了"即插即用"的方法,在運(yùn)行期間決定何時增加何種功能.
結(jié)構(gòu):
?
?
?
?
?
?
?
?
?
?
?
?

編程設(shè)計模式


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!??!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 久久动漫精品 | 国产欧美一区二区三区视频 | 欧美毛片基地 | 国内精品久久久久影 | 国产一级淫片a视频免费观看 | 日韩高清在线日韩大片观看网址 | 久久亚洲一级α片 | 亚洲专区欧美专区 | 波多野结衣在线观看3人 | 国产精品免费视频能看 | www.亚洲成人.com | 久久亚洲福利 | 99精彩免费观看 | 日韩一区二区超清视频 | 久久这里只有精品9 | 亚洲成人黄色 | 爱爱免费观看高清视频在线播放 | 成 人 黄 色 视频播放1 | a毛片视频免费观看影院 | 国产欧美成人一区二区三区 | 九九热视频精品在线 | 久久精品视频1 | 四虎在线最新永久免费播放 | 四虎影院在线免费播放 | 在线成人亚洲 | 久久国产一久久高清 | 国语自产偷拍精品视频偷最新 | 国产在线免 | 6080欧美一区二区三区四区 | 四虎精品国产一区二区三区 | 欧美网站色 | 免费一级特黄欧美大片勹久久网 | 女生毛片 | 日韩在线观看一区二区三区 | 99久久国产视频 | 欧美成 人激情视频 | 在线视频 自拍 | 久久99青青久久99久久 | 欧美一区二区三区免费观看视频 | 97久久国产一区二区三区四区 | 黄色影院免费看 |