<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 閱讀(133) 評論(0)  編輯  收藏

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


    網站導航:
     
    主站蜘蛛池模板: 精品国产香蕉伊思人在线在线亚洲一区二区| 亚洲性线免费观看视频成熟| 久久亚洲AV成人无码国产电影 | AAA日本高清在线播放免费观看| a级毛片免费完整视频| 一色屋成人免费精品网站| 久久久久久久亚洲Av无码| 亚洲午夜电影在线观看高清| 亚洲一级免费毛片| 巨胸喷奶水视频www免费视频| 7723日本高清完整版免费| 国产亚洲美女精品久久久2020 | 国产精品久久久亚洲| 亚洲人和日本人jizz| 人禽杂交18禁网站免费| 亚洲精品成人无码中文毛片不卡| 亚洲欧美日韩国产成人| a级黄色毛片免费播放视频| 久久久久亚洲精品无码系列| 亚洲成a人片在线不卡一二三区 | 九九99热免费最新版| 麻豆精品国产免费观看| 亚洲国产成人片在线观看无码| 久久久国产精品无码免费专区| 精品久久久久久久免费加勒比| 国产成人精品久久亚洲高清不卡| 99国产精品视频免费观看| 亚洲日韩在线观看| 豆国产96在线|亚洲| 亚洲区小说区图片区QVOD| 一区二区三区在线观看免费| 成年女人视频网站免费m| 亚洲制服丝袜精品久久| 美女被免费视频网站a国产 | 久久一本岛在免费线观看2020| 亚洲人成www在线播放| 免费在线视频你懂的| 亚洲人成网站在线播放vr| 国产大片线上免费观看| 亚洲香蕉在线观看| 扒开双腿猛进入爽爽免费视频|