工廠模式理解

工廠模式分為簡單工廠、工廠模式、抽象工廠三種層級概念。簡單工廠不屬于23種設(shè)計模式,抽象工廠才是。

簡單工廠

簡單工廠主要就是通過工廠創(chuàng)建一個個不同的實例。
如:

abstract class Animal{
        String name;
}
class Person extends Animal{
        public Person(String name){
                super();
                this.name = name;
        }
}
class Dog  extends Animal{
        public Dog(String name){
                super();
                this.name = name;
        }
}
class Factory{
        public Person getPerson(String name){
                return new Person(name);
        }
        public Dog getDog(String name){
               return new Dog(name);
        }

}

工廠模式

工廠模式就是將單一工廠抽象化,通過不同的具體工廠來生產(chǎn)不同的實例。

abstract class Factory{
        public abstract Animal create(String name);  
}
class PersonFactory extends Factory{
        public Animal create(String name){
                return new Person(name);
        }
}
class DogFactory extends Factory{
        public Animal create(String name){
                return new Dog(name);
        }
}

抽象工廠

有時候,可能工廠單一生產(chǎn)一種實例滿足不了我們的需求,就比如人分為老人、小孩、青年人。狗也一樣。他們有不同的行為表現(xiàn)形式,但是他們都有行為方式,所以我們可以將這種行為方式抽象出來,在工廠中,分類對他們進行處理。

abstract class property{
       protected abstract void behavior();
}
abstract class Young extends property{
        String name;
        protected Young (String name){
                this.name = name;
        }
}
abstract class Child extends property{
        String name;
        protected Child (String name){
                this.name = name;
        }
}
class YoungPeople extends Young{
        public YoungPeople (String name){
                super(name);
        }
        protected void behavior(){
                System.out.print("年輕人要工作");
        }
}
class ChildPeople extends Child {
        public ChildPeople (String name){
                super(name);
        }
        protected void behavior(){
                System.out.print("孩子們貪玩");
        }
}
abstract class Factory{
        public abstract Young createYoung(String name);  
        public abstract Child createChild(String name);  
}
class PersonFactory extends Factory{
        public Young createYoung(String name){
                return new YoungPeople(name);
        }
        public Child createChild(String name){
                return new ChildPeople(name);
        }
}

總結(jié)

簡單工廠實質(zhì)上并沒有對對象進行一個很好得分類作用,也沒有體現(xiàn)Java多態(tài)性(重載和重寫)
工廠模式通過不同的工廠對生產(chǎn)的不同實力進行管理,在生產(chǎn)一種實例時,只需要創(chuàng)建對應(yīng)的工廠,通過調(diào)用生產(chǎn)方法將對象生產(chǎn)出來,而且每次新增一種類型的對象,只需要新增一種工廠,簡單體現(xiàn)了Java的多態(tài)性,也很好進行了解耦作用。
抽象工廠是工廠模式的一種進階,此時,我們不再以一個對象為單位,而是以一種類別為單位,此時我們不再以對象來進行區(qū)分,而是以類型進行區(qū)分。當(dāng)他們具有一定相同的行為特征時,可以將這些行為特征提取出來,再具體分類處理,如人和狗都屬于動物,但是他們都有自己的行為特征,而老人和小孩的行為特征也是不一樣的。這時候,人就是一種類別,而狗,又是另一種類別??偛荒馨讶撕凸坊鞛橐徽劦模~
其實本次代碼還有很多可以優(yōu)化的地方,比如工廠可以采用單例模式,部分可以采用泛型優(yōu)化等。待后續(xù)熟練后優(yōu)化~工廠菜鳥隨筆感觸。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 前言 只有光頭才能變強 回顧前面: 給女朋友講解什么是代理模式 包裝模式就是這么簡單啦 單例模式你會幾種寫法? 昨...
    Java3y閱讀 1,379評論 3 24
  • 前幾天寫了對單列模式的理解和學(xué)習(xí)技巧,這只是我個人對于這個開發(fā)模式的認(rèn)識和理解,如果大家有更好的解釋可以推薦給我啊...
    破曉丨閱讀 439評論 0 2
  • 設(shè)計模式匯總 一、基礎(chǔ)知識 1. 設(shè)計模式概述 定義:設(shè)計模式(Design Pattern)是一套被反復(fù)使用、多...
    MinoyJet閱讀 4,093評論 1 15
  • 封裝接口請求requests 使用配置文件切換測試環(huán)境、預(yù)發(fā)環(huán)境、生產(chǎn)環(huán)境 config.ini 配置文件讀取 ...
    木沐__閱讀 495評論 0 2
  • 2017.05.09 19:30這一串?dāng)?shù)字就是錘子科技開發(fā)布會的時間 堅果pro配置估摸著差不多是這樣的: 標(biāo)配....
    科技音浪閱讀 153評論 0 0

友情鏈接更多精彩內(nèi)容