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

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

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

    Java綠地(~ming~)

    Java 草地

    常用鏈接

    統計

    最新評論

    軟件構架的精髓:設計模式(Design Partern)

    Design Partern設計模式

    .設計模式原則:a.開閉原則(對擴展開放,修改關閉);
                   b.
    組合聚合復用原則(組合可選用功能)

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

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





    .主要模式:a.簡單工廠模式:主要利用抽象類可以很好的實現開閉原則.種類改變情況:

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

    2.public class AppleFactory extends FruitFactory {

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

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

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

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

    5.對外訪問: public class Client {

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

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

    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.測試: public class Client {   public static void main(String args[]) {

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

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

     

    成員變量為static的時候立即開辟空間,但static方法在調用時才開辟空間,稱緩式初始化

     

    c.單例模式:只產生一個實例連接:特點:a.實例保存在一個static成員變量里面

       b.構造方法是private,在外類不可new;c.通過static方法返回單例實例.

       區別:a.餓汗模式在成員變量聲明時即對單例初始化

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

    .a.public class Singleton { 

            private static Singleton instance=new Singleton();

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

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

       b. public class SingletonLazy {  //方法是個動作,可同時改變值,但static變量是空間

            private static SingletonLazy instance;   private SingletonLazy(){    }

          public synchronized static SingletonLazy getInstance(){

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

    在外類中只可以通過如下調用:   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"); }}



    .對象適配器public class Adepter2 implements Target {

              private Adeptee adeptee; //通過組合思想,用有參構造方法

              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 { //在不影響原有功能的基礎上進行擴展

        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); }   //子類一定要先對父類初始化

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

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

     

    5.測試: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參數àDecoratoràPhoto.callàphone.call()àmp3.call)

     

    備注:super只是用來初始化父類的構造方法,多態的方式是通過new得到身份的,與其他無關

     

     

     

     

    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!"); }//執行

     

    5.調用: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 閱讀(552) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲av无码成人精品区| 性xxxx视频免费播放直播 | 亚洲中文字幕无码mv| 久操视频在线免费观看| 国产亚洲精品资源在线26u| 国产精品免费视频观看拍拍| 亚洲av午夜精品一区二区三区| 色噜噜狠狠色综合免费视频| 亚洲av高清在线观看一区二区| 国产区图片区小说区亚洲区| 亚洲女人被黑人巨大进入| 成人毛片100免费观看| 亚洲AV日韩精品久久久久| 91精品国产免费入口| 亚洲免费视频播放| 在线jyzzjyzz免费视频| 精品女同一区二区三区免费播放| 亚洲不卡无码av中文字幕| 99视频免费在线观看| 少妇中文字幕乱码亚洲影视 | 99久热只有精品视频免费观看17| 日韩亚洲Av人人夜夜澡人人爽| 天天影院成人免费观看| 亚洲欧美一区二区三区日产| 免费一级大黄特色大片| 国产成人免费ā片在线观看老同学| 亚洲国产一区二区三区青草影视| 免费精品国产自产拍在线观看图片| 亚洲精品天堂成人片AV在线播放 | 亚洲av之男人的天堂网站| 999久久久免费精品播放| 亚洲国产综合精品中文第一| 四虎永久在线精品免费观看地址 | 国产一卡2卡3卡4卡2021免费观看| 国产亚洲精品bv在线观看| 亚洲国模精品一区| 97在线视频免费公开观看| 含羞草国产亚洲精品岁国产精品| 亚洲日韩乱码中文无码蜜桃臀网站| 国产精品免费精品自在线观看| 风间由美在线亚洲一区|