标签:
1.FactoryMode(工厂模式)
定义:提供创建对象的接口,方便对象的创建。
2.静态工厂方法模式(Static Factory Method Mode)
定义:对于对象的创建,交给工厂类内部的静态方法实现。
使用场景:适用于基类的子类较少时,且基本不会再增加子类时。
坏处,当子类增加时,需要修改工厂类的内部,违背了开闭原则。
基类与子类:
public interface Sender {
void send ();
}
class SenderMail implements Sender
{
@Override
public void send() {
// TODO Auto-generated method stub
System.out.println("发送邮件。");
}
}
class SenderSms implements Sender
{
@Override
public void send() {
// TODO Auto-generated method stub
System.out.println("发送短信。");
}
}
静态工厂模式:
//静态工厂模式方法:通过工厂内部的方法产生对象。
//缺点:当基类的子类增加时,需要修改工厂类里的方法。
// 违背了开闭原则(增加接口的扩展,减少内部的修改)
class SenderFactory {
public static Sender produceMail()
{
return new SenderMail();
}
public static Sender produceSms()
{
return new SenderSms();
}
}
测试:
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
Sender mail=SenderFactory.produceMail();
mail.send();
Sender sms=SenderFactory.produceSms();
sms.send();
}
}
运行:
发送邮件。 发送短信。
3.抽象工厂模式(Abstract Factory)
定义:对于对象的创建,交给抽象工厂的子类工厂去实现。
使用场景:当基类的子类增加时,我可以增加对于的工厂子类去创建对象,符合开闭原则。
抽象工厂:
interface SenderFactory {
Sender produce();
}
class MailSenderFactory implements SenderFactory
{
@Override
public Sender produce() {
// TODO Auto-generated method stub
return new SenderMail();
}
}
class SmsSenderFactory implements SenderFactory
{
@Override
public Sender produce() {
// TODO Auto-generated method stub
return new SenderSms();
}
}
测试:
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
Sender mail=new MailSenderFactory().produce();
mail.send();
Sender sms=new SmsSenderFactory().produce();
sms.send();
}
}
运行:
发送邮件。 发送短信。
标签:
原文地址:http://www.cnblogs.com/beyondbycyx/p/4421551.html