(该文内容为原创,有不足之处望多多指教!)
设计模式根据目的准则可以分为三类:
- 创建型:creational 创建型的设计模式与对象的创建有关。
- 结构型:Structural 处理类和对象之间的组合。
- 行为型:behavioral 描述类和对象如何交互及如何分配职责。
- 工厂方法模式是什么?
站在使用者的角度,工厂方法模式是指使用者提出想要实现的具体功能或者说是想要生产的具体的东西的要求,在通过工厂制造之后就将该东西或功能交付给使用者。使用者并不知道实现的具体过程,只是做了要求提出以及实现的结果的使用。
严谨来说工厂方法模式(Factory Method)也叫工厂模式,属于类创建型模式,工厂父类(接口)负责定义产品对象的公共接口,而子类工厂则负责创建具体的产品对象。
目的:是为了把产品的实例化操作延迟到子类工厂中完成,通过工厂子类来决定究竟应该实例化哪一个产品具体对象
有四部分组成:
1. 抽象工厂角色:具体工厂必须实现的接口或必须继承的父类。一般由抽象类或接口实现。
2. 具体工厂角色:是具体应用程序调用以创建对应的具体产品的对象。一般它由具体的类来实现。
3. 抽象产品角色:具体产品继承的父类或实现的接口。一般由抽象类或接口实现。
4. 具体产品角色:具体工厂角色所创建的对象就是它的实例。一般由具体类实现。
- 通过实例来区分工厂方法模式的四部分及运用。
实例:boss提出发送消息给员工
public class FactoryMethod{
/**
* 定义公共的接口send
*/
interface Send {
void send();
}
/**
* 定义具体工厂角色,继承公共接口
*/
class SmsFactory implements Send{
@Override
public void send() {
// TODO 自动生成的方法存根
System.out.println("通过短信发送消息");
}
}
class MailFactory implements Send{
@Override
public void send() {
// TODO 自动生成的方法存根
System.out.println("通过E—mail发送消息");
}
}
/**
* 将使用者所指定的方式与子工厂匹配,利用工厂实现
*
*/
class Factory{
public void method(String a){
if ("sms".equals(a)){new SmsFactory().send();}
else if("email".equals(a)){new MailFactory().send();}
else
System.out.print("输入错误");
}
}
/**
* 定义使用者
*/
public static void main(String args[]){
FactoryMethod temp=new FactoryMethod();
Factory temp1=temp.new Factory();
temp1.method("sms");
temp1.method("email");
}
}
输出为:通过短信发送消息
通过E—mail发送消息