Factory Method(工厂模式)

名  称 
Factory Method(工厂模式) 

意  图 
定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method 使一个类的实例化延迟到其子类。 

适  用 

环  境 
当一个类不知道它所必须创建的对象的类的时候。 

当一个类希望由它的子类来指定它所创建的对象的时候。 

当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类 

是代理者这一信息局部化的时候。 

结  构 


 

示意性代码:

//抽象工场 package Factory; public interface Creator { public Product getInstance(); } //抽象产品 package Factory; public interface Product { public void getProName(); public void getProDate(); } //具体产品--鼠标 package Factory; import java.util.Date; public class Mouse implements Product { private Date date; private String name; public Mouse(Date date, String name) { this.date = date; this.name = name; } @Override public void getProDate() { System.out.println("生产日期为:" + this.getDate()); } @Override public void getProName() { System.out.println("产品名称:" + this.getName()); } public Date getDate() { return date; } public void setDate(Date date) { this.date = date; } public void setName(String name) { this.name = name; } public String getName() { return this.name; } @Override public String toString() { return "产品名称:" + name + "生产日期:" + date; } } //具体产品--键盘 package Factory; import java.util.Date; public class KeyBoard implements Product { private Date date; private String name; public KeyBoard(Date date, String name) { this.date = date; this.name = name; } @Override public void getProDate() { System.out.println("生产日期为:" + this.getDate()); } @Override public void getProName() { System.out.println("产品名称:" + this.getName()); } public Date getDate() { return date; } public void setDate(Date date) { this.date = date; } public void setName(String name) { this.name = name; } public String getName() { return this.name; } @Override public String toString() { return "产品名称:" + name + "生产日期:" + date; } } //鼠标工厂 package Factory; import java.util.Date; public class MouseCreator implements Creator { @Override public Product getInstance() { return new Mouse(new Date(), "鼠标"); } } //键盘工厂 package Factory; import java.util.Date; public class KeyBoardCreator implements Creator { @Override public Product getInstance() { return new KeyBoard(new Date(), "键盘"); } } //测试类--Main package Factory; public class Main { public static void main(String[] args) { Mouse mouse = (Mouse) new MouseCreator().getInstance(); KeyBoard keyBoard = (KeyBoard) new KeyBoardCreator().getInstance(); System.out.println(mouse.toString()); System.out.println(keyBoard.toString()); } }  

每一种产品对应一个产品工厂,如果产品较多那么工厂也会随产品增加!

你可能感兴趣的:(Date,String,Class,interface,产品,keyboard)