设计模式-工厂方法描述
大家好,我是Client。
天地开辟之初我便诞生了。
publicclassClient{publicstaticvoidmain(String[]args){}}@startuml class Client @enduml后来又有两个家伙诞生了,一个是Factory。
interfaceFactory{}另一个是Product.
interfaceProduct{}@startuml class Client interface Factory interface Product @enduml不过他们非常羸弱,被我轻松拿捏,任意驱使。
publicclassClient{publicstaticvoidmain(String[]args){Factoryfactory;Productproduct;}}@startuml class Client{ + factory:Factory + product:Product } interface Factory interface Product Client o--Factory Client o--Product @enduml你,Product,以后就是我的产品设计师了。
你,Factory,以后你就负责给我生产产品。
interfaceProduct{abstractvoidfunction();}interfaceFactory{abstractProductcreateProduct();}@startuml class Client{ + factory:Factory + product:Product } interface Factory{ +{abstract} createProduct():Product } interface Product{ +{abstract} function() } Client o--Factory Client o--Product @enduml有一天我想吃苹果,我就给Product说,“去,给我设计苹果。
Product马不停蹄,立马给我设计了苹果。
classAppleimplementsProduct{@Overridepublicvoidfunction(){System.out.println("你吃了苹果");}}@startuml class Client{ + factory:Factory + product:Product } interface Factory{ +{abstract} createProduct():Product } interface Product{ +{abstract} function() } class Apple{ + function() } Client o--Factory Client o--Product Product<|..Apple @endumlFactory连夜赶工,加急建了一个苹果生产工厂开始生产苹果
classAppleFactoryimplementsFactory{@OverridepublicProductcreateProduct(){returnnewApple();}}@startuml class Client{ + factory:Factory + product:Product } interface Factory{ +{abstract} createProduct():Product } interface Product{ +{abstract} function() } class Apple{ + function(); } class AppleFactory{ + createProduct():Apple } Client o--Factory Client o--Product Product<|..Apple Factory<|..AppleFactory AppleFactory..>Apple @enduml我不需要知道他们具体是怎么操作的,反正我只要吃到苹果就行了。
publicclassClient{publicstaticvoidmain(String[]args){Factoryfactory;Productproduct;factory=newAppleFactory();product=factory.createProduct();product.function();}}Product和Factory在我的奴役下熬过了漫长岁月。
有一天我想尝尝100年前的馒头。
Product为我设计了馒头。
classMantou100yearsAgoimplementsProduct{@Overridepublicvoidfunction(){System.out.println("馒头有毒,你死了”);}}@startuml class Client{ + factory:Factory + product:Product } interface Factory{ +{abstract} createProduct():Product } interface Product{ +{abstract} function() } class Apple{ + function(); } class AppleFactory{ + createProduct():Apple } class Mantou100yearsAgo{ + function } Client o--Factory Client o--Product Product<|..Apple Factory<|..AppleFactory AppleFactory..>Apple Factory<|..Mantou100yearsAgo @endumlFactory建立了馒头工厂为我生产馒头
classMantouFactoryimplementsFactory{@OverridepublicProductcreateProduct(){returnnewMantou100yearsAgo();}}@startuml class Client{ + factory:Factory + product:Product } interface Factory{ +{abstract} createProduct():Product } interface Product{ +{abstract} function() } class Apple{ + function(); } class AppleFactory{ + createProduct():Apple } class Mantou100yearsAgo{ + function } class MantouFactory{ + createFactory() } Client o--Factory Client o--Product Product<|..Apple Factory<|..AppleFactory AppleFactory..>Apple Product<|..Mantou100yearsAgo Factory<|..MantouFactory MantouFactory..>Mantou100yearsAgo @enduml我也算是吃上了100年前的馒头
publicclassClient{publicstaticvoidmain(String[]args){Factoryfactory;Productproduct;factory=newAppleFactory();product=factory.createProduct();product.function();factory=newMantouFactory();product=factory.createProduct();product.function();}}我死了,世界毁灭了。
