<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Java綠地(~ming~)

    Java 草地

    常用鏈接

    統(tǒng)計(jì)

    最新評(píng)論

    軟件構(gòu)架的精髓:設(shè)計(jì)模式(Design Partern)

    Design Partern設(shè)計(jì)模式

    .設(shè)計(jì)模式原則:a.開(kāi)閉原則(對(duì)擴(kuò)展開(kāi)放,修改關(guān)閉);
                   b.
    組合聚合復(fù)用原則(組合可選用功能)

      
                   c.
    接口隔離原則(防止接口過(guò)肥);
                   d.law of Remeter(
    抵米特法則,通過(guò)中間件對(duì)外訪問(wèn));

     
                   e.
    依賴倒轉(zhuǎn)原則(依賴接口);
                   f:the substitution of Lee(
    多態(tài),向上轉(zhuǎn)型以父類出現(xiàn));





    .主要模式:a.簡(jiǎn)單工廠模式:主要利用抽象類可以很好的實(shí)現(xiàn)開(kāi)閉原則.種類改變情況:

    : 1.public abstract class FruitFactory { public abstract Fruit creatFruit(); }

    2.public class AppleFactory extends FruitFactory {

          public Fruit creatFruit() {  return  new Apple(); }  } //李式替代原則,向上轉(zhuǎn)型

    3. public abstract class Fruit {    public void display() { }  }

    4. public class Apple extends Fruit {  public void display() {

            System.out.println("this is apple");    }  }

    5.對(duì)外訪問(wèn): public class Client {

          public static void main(String args[]) { FruitFactory ff=new AppleFactory();

            Fruit apple=ff.creatFruit();        apple.display(); } } //向下轉(zhuǎn)型

    b.工廠模式2(抽象工廠,種類不變,但分組改變的情況):

    : 1.public abstract class Factory {

          public abstract Desk creatDesk(); public abstract Chair creatChair();  }

        2. public class GlassFactory extends Factory {

          public Desk creatDesk() { return new GlassDesk(); }

          public Chair creatChair() {  return new GlassChair();    }  }

    3. public abstract class Chair {    public abstract void display(); }

    4. public class GlassChair extends Chair {

           public void display() {  System.out.println("this is glassChair!"); }}

    5.測(cè)試: public class Client {   public static void main(String args[]) {

            Factory fc=new GlassFactory();  Chair glasschair=fc.creatChair();

            glasschair.display(); } }    //向下轉(zhuǎn)型,以父類的名義調(diào)用所有方法

     

    成員變量為static的時(shí)候立即開(kāi)辟空間,但static方法在調(diào)用時(shí)才開(kāi)辟空間,稱緩式初始化

     

    c.單例模式:只產(chǎn)生一個(gè)實(shí)例連接:特點(diǎn):a.實(shí)例保存在一個(gè)static成員變量里面

       b.構(gòu)造方法是private,在外類不可new;c.通過(guò)static方法返回單例實(shí)例.

       區(qū)別:a.餓汗模式在成員變量聲明時(shí)即對(duì)單例初始化

           b.懶漢式在獲取實(shí)例的static方法中才對(duì)單例初始化,并對(duì)方法加synchronized

    .a.public class Singleton { 

            private static Singleton instance=new Singleton();

            private Singleton(){   }         //只留一個(gè)getInstance接口

        public static Singleton getInstance(){       return instance;    } }

       b. public class SingletonLazy {  //方法是個(gè)動(dòng)作,可同時(shí)改變值,但static變量是空間

            private static SingletonLazy instance;   private SingletonLazy(){    }

          public synchronized static SingletonLazy getInstance(){

            if(instance==null)  instance=new SingletonLazy();  return instance;    }}

    在外類中只可以通過(guò)如下調(diào)用:   Singleton s=Singleton.getInstance();

     

    d.適配器模式:

    .類適配器:1. public interface Target {

                    public void operator1();      public void operator2(); }

    2.public class Adeptee {

        public void operator1(){    System.out.println("this is Adeptee function");} }

    3. public class Adepter extends Adeptee implements Target {//將所有方法放在適配器中

        public void operator2() {   System.out.println("this is new function"); }}



    .對(duì)象適配器public class Adepter2 implements Target {

              private Adeptee adeptee; //通過(guò)組合思想,用有參構(gòu)造方法

              public Adepter2(Adeptee adeptee){   this.adeptee=adeptee;      }

                 public void operator1(){     adeptee.operator1();   }

                 public void operator2(){      System.out.println("tagert function!");}}

    e.裝飾模式



    類:1public abstract class Phone {   public abstract void call();   }

    2public class NomalPhone extends Phone { //在不影響原有功能的基礎(chǔ)上進(jìn)行擴(kuò)展

        public void call() {    System.out.println("nomal phone!"); }}

     

    3public abstract class PhoneDecorator extends Phone { protected Phone phone;  

        public PhoneDecorator(Phone phone){     this.phone=phone;   }

        public void call() {    } }

    4. public class Mp3Phone extends PhoneDecorator {

        public Mp3Phone(Phone phone) { super(phone); }   //子類一定要先對(duì)父類初始化

        private void mp3Phone(){        System.out.println("this is mp3phone!");    }

        public void call() {        phone.call( );        mp3Phone(); }}

     

    5.測(cè)試:public class Client {   public static void main(String args[]){

            Phone mp3phone=new Mp3Phone(new NomalPhone());      mp3phone.call();

            Phone allphone=new Mp3Phone(new PhotoPhone(new NomalPhone()));

    allphone.call();}} (Photo.phone參數(shù)àDecoratoràPhoto.callàphone.call()àmp3.call)

     

    備注:super只是用來(lái)初始化父類的構(gòu)造方法,多態(tài)的方式是通過(guò)new得到身份的,與其他無(wú)關(guān)

     

     

     

     

    f.命令模式:




    類:1.public class ControlPanel {   //命令傳遞者

        private Command onComm;

        public ControlPanel(Command onComm) {       this.onComm=onComm; }

        public void on() {  onComm.handle(); }}

    2. public abstract class Command { protected Television tv;  //命令

        public Command(Television tv){     this.tv=tv; }

        public abstract void handle( );  }

    3. public class TurnOn extends Command { 

        public TurnOn(Television tv) {      super(tv);      }

        public void handle() {      tv.open();  }}

    4. public class Television{ public void open(){System.out.println("open!"); }//執(zhí)行

     

    5.調(diào)用:public class Client {   public static void main(String args[]){

    Television tv=new Television();

    ControlPanel cp=new ControlPanel(new TurnOn(tv));       cp.on();  } }

    posted on 2007-08-03 17:45 mrklmxy 閱讀(559) 評(píng)論(0)  編輯  收藏


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲日韩在线观看免费视频| 18女人腿打开无遮掩免费| 日韩免费福利视频| 亚洲国产午夜精品理论片 | 两性色午夜视频免费网| 亚洲国模精品一区| ssswww日本免费网站片| 久久综合亚洲色HEZYO国产| 国产高潮久久免费观看| 国产亚洲大尺度无码无码专线| 一级毛片a女人刺激视频免费| 亚洲一区视频在线播放| 视频免费在线观看| 国产成人涩涩涩视频在线观看免费| 羞羞漫画小舞被黄漫免费| 成人毛片18岁女人毛片免费看| 久久久影院亚洲精品| 亚洲精品国产va在线观看蜜芽| 国产精品亚洲一区二区无码 | 国产亚洲精品国产福利在线观看| 国产成人无码区免费A∨视频网站 国产成人涩涩涩视频在线观看免费 | 免费大片av手机看片| 久久亚洲精品视频| 最近中文字幕高清免费中文字幕mv | 久久国内免费视频| 最新亚洲人成无码网站| 在线亚洲午夜理论AV大片| 91短视频在线免费观看| 亚洲乱码国产乱码精华| 成人午夜亚洲精品无码网站| 最近2019年免费中文字幕高清| 2017亚洲男人天堂一| 亚洲中文字幕伊人久久无码| 免费在线看黄的网站| 亚洲日本VA中文字幕久久道具| 亚洲国产精品尤物yw在线 | 成人啪精品视频免费网站| 四虎影视久久久免费| 亚洲无成人网77777| 日韩精品电影一区亚洲| 亚洲w码欧洲s码免费|