国产探花免费观看_亚洲丰满少妇自慰呻吟_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()

下一篇:命名空間

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 始兴县| 东方市| 长武县| 恭城| 革吉县| 大庆市| 乐平市| 天全县| 融水| 察隅县| 封开县| 泸西县| 平安县| 呈贡县| 马山县| 光山县| 天等县| 丰县| 盐池县| 开阳县| 财经| 太白县| 沅陵县| 黎川县| 开远市| 中宁县| 界首市| 庄浪县| 沧源| 珲春市| 连州市| 朝阳区| 石河子市| 施秉县| 秀山| 青阳县| 凤凰县| 河源市| 邵东县| 叶城县| 招远市|