转载:http://blog.youkuaiyun.com/zhangerqing
设计模式(Design Patterns)
可复用面向对象软件的基础
1.设计模式:反复使用,为多数人知晓的,经过分类编目的,代码设计的总结
2.可重用代码,让代码更容易让人理解,保证代码的可靠性,使代码编程工程化
3.设计模式的分类:
3.1创建型模型:工厂方法模式,抽象工厂模式,单例模式,建造者模式,原型模式
3.2结构型模型:适配器模式,装饰器模式,代理模式,外观者模式,桥接模式,组合模式,享元模式
3.3行为性模型:策略模式,模板方法模式,观察者模式,迭代子模式,责任链模式,命令模式,备忘录模式,状态模式,访问者模式,中介者模式,解释器模式
3.4并发型模式,线程池模式
4.1工厂方法模型(Factory Method)
4.1.1普通工厂模式:建立一个工厂类,对实现了同一接口的类,进行实例的创建
例如创建发送邮件的例子
public interface Sender {
public void Send();
}
其次,创建实现类
public class MailSender implements Sender {
@Override
public void Send() {
System.out.println("this is mailsender!");
}
}
public class SmsSender implements Sender {
@Override
public void Send() {
System.out.println("this is sms sender!");
}
}
最后创建工厂类
public class SendFactory {
public Sender produce(String type) {
if ("mail".equals(type)) {
return new MailSender();
} else if ("sms".equals(type)) {
return new SmsSender();
} else {
System.out.println("请输入正确的类型!");
return null;
}
}
}
创建测试类
public class FactoryTest {
public static void main(String[] args) {
SendFactory factory = new SendFactory();
Sender sender = factory.produce("sms");
sender.Send();
}
}
4.1.2多个工厂方法模式:对普通工厂方法模式的改进,在普通工厂方法的模式中,如果传递的字符串出错,则不能正确的创建对象,而多个工厂方法模式则提供了多个工厂方法,分别创建对象:
public Sender produceMail(){
return new MailSender();
}
public Sender produceSms(){
return new SmsSender();
}
}
测试类如下:
public class FactoryTest {
public static void main(String[] args) {
SendFactory factory = new SendFactory();
Sender sender = factory.produceMail();
sender.Send();
}
}
public class SendFactory {
public static Sender produceMail(){
return new MailSender();
}
public static Sender produceSms(){
return new SmsSender();
}
}
public class FactoryTest {
public static void main(String[] args) {
Sender sender = SendFactory.produceMail();
sender.Send();
}
}