转载:http://blog.csdn.net/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(); } }