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

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

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

    隨筆-19  評論-2  文章-1  trackbacks-0

     

     

     

    對簡單工廠的特殊情況進行測試——工廠角色與具體產品角色合并

    代碼如下:

    abstract class AbstractClass{

           private static String name;

           public final static AbstractClass format(String value){

                  name = value;

                  return new Embody();

           }

           public String getMsg(){

                  return name;

           }

           public abstract void fun1();

    }

     

    class Embody extends AbstractClass{

           public void fun1(){

                  System.out.println("the enbody extends AbstractClass" + getMsg());

           }

    }

    public class tt {

           public static void main(String args[]){

                  AbstractClass.format("name").fun1();

           }

    }

    上面的代碼中通過工廠方法把子類具體的實例化隱藏了起來。

    下面是對一個普通的簡單工廠模式的實現:

    代碼測試:

          

    package sky;

    //產品抽象類

    abstract class People{

           public String name; //名字

           public String occuptationl;  //職業

           abstract public String getMsg();

    }

    //學生類——具體產品

    class Student extends People{

           private String name;

           private String occupation;

           private String grade;

          

           public Student(String name,String occupation){

                  this.name = name;

                  this.occupation = occupation;

           }

           public void setGrade(String grade){

                  this.grade = grade;

           }

           public String getGrade(){

                  return grade;

           }

           public String getMsg(){

                  return getOccupation()+getName()+getGrade();

           }

           public String getOccupation(){

                  return occupation;

           }

           public String getName(){

                  return name;

           }

          

    }

    //教師類——具體產品類

    class Teacherextends People{

           private String name;

           private String occupation;

           private int wage;

          

           public Teacher(String name,String occupation){

                  this.name = name;

                  this.occupation = occupation;

           }

           public void setWage(int wage){

                  this.wage = wage;

           }

           public String getMsg(){

                  return getOccupation()+getName() + getWage();

           }

           public String getOccupation(){

                  return occupation;

           }

           public String getName(){

                  return name;

           }

           public int getWage(){

                  return wage;

           }

    }

    //工廠類

    class factory{

           public static People build(String name,String occupation) throws BadPeopleException{

                  if(occupation.equals("student")){

                         return new Student(name,occupation);

                  }

                  else if(occupation.equals("teacher")){

                         return new Teacher(name,occupation);

                  }else{

                         throw new BadPeopleException("can not found the people");

                  }

           }

    }

    //異常處理

    class BadPeopleException extends Exception{

           public BadPeopleException(String msg){

                  super(msg);

           }

    }

     

    public class test{

           public static void main(String args[]){

                  try {

                         Student t = (Student) factory.build("sky","student");

     //從這個顯示轉換申明中我并沒有看到簡單工廠的好處

                         factory.build("fly","teacher");

    /*難道只有這樣才可以看到它的優點嗎?——能夠避免客戶決定什么時候創建哪個實例*/

                         t.setGrade("three");

                         System.out.println(t.getMsg());

                  } catch (BadPeopleException e) {

                         // TODO Auto-generated catch block

                         e.printStackTrace();

                  }

           }

    }

     

         問題:接口和抽象類的區別在哪里?    

     

     

      13 工廠方法模式 <java與模式> ---電子書 page146

     

           組成為:抽象工廠、具體工廠、抽象產品、具體產品

    其中抽象工廠是為外部訪問內部的一個接口,它的好處是可以通過擴張具體產品和具體工廠而不用改變客戶端的代碼.

     

    一個簡單的測試代碼如下:

     

    interface Fruit{

           void grow();

           void harvest();

    }

    class Apple implements Fruit{

           private int treeNumber;

          

           public void grow(){

                  System.out.println("Apple.grow()");

           }

           public void harvest(){

                  System.out.println("Apple.harvest()");

           }

           public void setTreeNumber(int number){

                  treeNumber = number;

           }

           public int getTreeNumber(){

                  return treeNumber;

           }

          

    }

    class StrawBerry implements Fruit{

           public void grow(){

                  System.out.println("StrawBerry.grow()");

           }

           public void harvest(){

                  System.out.println("StrawBerry.harvest()");

           }

    }

     abstract class Gardener{

          abstract public Fruit product();

     }

     

     class AppleGardener extends Gardener{

          public Fruit product(){

                 return new Apple();

          }

     }   

     class StrawBerryGardener extends Gardener{

          public Fruit product(){

                 return new StrawBerry();

          }

     }

    public class Client {

           public static void main(String args[]){

                  Fruit apple,strawberry;

                  AppleGardener applegarder = new AppleGardener();

                  StrawBerryGardener strawberrygarder = new StrawBerryGardener();

                  apple = applegarder.product();

                  strawberry = strawberrygarder.product();

                  apple.grow();

                  strawberry.grow();

           }

    }

    posted on 2005-07-30 20:54 sky 閱讀(135) 評論(0)  編輯  收藏

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


    網站導航:
     
    主站蜘蛛池模板: 免费在线观看你懂的| 人妻丰满熟妇无码区免费| 青青免费在线视频| 亚洲一卡2卡3卡4卡乱码 在线| 亚洲精品在线播放视频| avtt天堂网手机版亚洲| 亚洲.国产.欧美一区二区三区| 国产成人精品久久亚洲高清不卡| 男男黄GAY片免费网站WWW| 999zyz**站免费毛片| 五月亭亭免费高清在线| 好吊妞视频免费视频| 激情小说亚洲色图| 成人精品一区二区三区不卡免费看| 99视频在线精品免费| 四虎影视精品永久免费| 一级毛片在线免费视频| a级成人免费毛片完整版| 三年片在线观看免费大全| 亚洲日韩人妻第一页| 亚洲国产成人在线视频| 亚洲精品av无码喷奶水糖心| 羞羞漫画在线成人漫画阅读免费| 精品一区二区三区免费毛片| 中文字幕免费观看| 亚洲国产精品无码久久久久久曰| 亚洲成人免费在线观看| 一级特黄aaa大片免费看| 精品久久久久久久久免费影院| 免费一级毛片在级播放| 亚洲av无码国产综合专区| 三年片在线观看免费| 国产v片免费播放| 亚洲成AV人片久久| 国产午夜无码片免费| 国国内清清草原免费视频99| 亚洲国产另类久久久精品小说| 亚洲精品无码久久久久牙蜜区| 老司机69精品成免费视频| 亚洲毛片不卡av在线播放一区| 99热亚洲色精品国产88|