国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

設計模式-工廠模式(簡單工廠模式和方法工廠模式)

2019-11-06 07:18:35
字體:
來源:轉載
供稿:網友

一、簡單工廠模式

簡單工廠模式概述?又叫靜態工廠方法模式,它定義一個具體的工廠類負責創建一些類的實例優點?客戶端不需要在負責對象的創建,從而明確了各個類的職責缺點?這個靜態工廠類負責所有對象的創建,如果有新的對象增加,或者某些對象的創建方式不同,就需要不斷的修改工廠類,不利于后期的維護代碼://動物類

public abstract class Animal {    public abstract void eat();}

//貓類

public class Cat extends Animal {    @Override    public void eat() {        System.out.PRintln("貓吃魚");    }}

//狗類

public class Dog extends Animal {    @Override    public void eat() {        System.out.println("狗吃肉");    }}

//動物工廠

public class AnimalFactory {    private AnimalFactory() {    }    public static Animal createAnimal(String type) {        if ("dog".equals(type)) {            return new Dog();        } else if ("cat".equals(type)) {            return new Cat();        } else {            return null;        }    }}

//測試類

public class AnimalDemo {    public static void main(String[] args) {        // 具體類調用        Dog d = new Dog();        d.eat();        Cat c = new Cat();        c.eat();        System.out.println("------------");        Animal a = AnimalFactory.createAnimal("dog");        a.eat();        a = AnimalFactory.createAnimal("cat");        a.eat();        // NullPointerException        a = AnimalFactory.createAnimal("pig");        if (a != null) {            a.eat();        } else {            System.out.println("對不起,暫時不提供這種動物");        }    }}

二、工廠方法模式

工廠方法模式概述?工廠方法模式中抽象工廠類負責定義創建對象的接口,具體對象的創建工作由繼承抽象工廠的具體類實現。優點?客戶端不需要在負責對象的創建,從而明確了各個類的職責,如果有新的對象增加,只需要增加一個具體的類和具體的工廠類即可,不影響已有的代碼,后期維護容易,增強了系統的擴展性缺點?需要額外的編寫代碼,增加了工作量//動物類

public abstract class Animal {    public abstract void eat();}

//工廠接口

public interface Factory {    public abstract Animal createAnimal();}

//貓類

public class Cat extends Animal {    @Override    public void eat() {        System.out.println("貓吃魚");    }}

//狗類

public class Dog extends Animal {    @Override    public void eat() {        System.out.println("狗吃肉");    }}

//貓工廠類

public class Cat extends Animal {    @Override    public void eat() {        System.out.println("貓吃魚");    }}

//狗工廠類

public class DogFactory implements Factory {    @Override    public Animal createAnimal() {        return new Dog();    }}

//測試類

public class AnimalDemo {    public static void main(String[] args) {               Factory f = new DogFactory();        Animal a = f.createAnimal();        a.eat();        System.out.println("-------");                        f = new CatFactory();        a = f.createAnimal();        a.eat();    }}


上一篇:Server.MapPath()

下一篇:命名空間

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 那曲县| 吉隆县| 卢龙县| 海原县| 红安县| 敖汉旗| 乃东县| 防城港市| 安阳县| 兰溪市| 日照市| 灵山县| 新龙县| 类乌齐县| 繁峙县| 昌平区| 木里| 海原县| 丰县| 谢通门县| 新民市| 沾益县| 太白县| 徐汇区| 泰宁县| 蒲城县| 东光县| 江西省| 博白县| 常山县| 苏尼特左旗| 武清区| 台中县| 班戈县| 西乌珠穆沁旗| 汤阴县| 淳化县| 芒康县| 施秉县| 固镇县| 宜黄县|