RSS订阅欢迎来到Java程序员学习天地!
你的位置:首页 » Java开发中的23种模式(一)

Java开发中的23种模式(一)

三、Java的23中设计模式

从这一块开始,我们详细介绍Java中23种设计模式的概念,应用场景等情况,并结合他们的特点及设计模式的原则进行分析。

1、工厂方法模式(Factory Method)

工厂方法模式分为三种:

11、普通工厂模式,就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建。首先看下关系图:

 

举例如下:(我们举一个发送邮件和短信的例子)

首先,创建二者的共同接口:

[java] view plaincopy

1.  public interface Sender {  

2.      public void Send();  

3.  }  

其次,创建实现类:

[java] view plaincopy

1.  public class MailSender implements Sender {  

2.      @Override  

3.      public void Send() {  

4.          System.out.println("this is mailsender!");  

5.      }  

6.  }  

[java] view plaincopy

1.  public class SmsSender implements Sender {  

2.    

3.      @Override  

4.      public void Send() {  

5.          System.out.println("this is sms sender!");  

6.      }  

7.  }  

最后,建工厂类:

[java] view plaincopy

1.  public class SendFactory {  

2.    

3.      public Sender produce(String type) {  

4.          if ("mail".equals(type)) {  

5.              return new MailSender();  

6.          } else if ("sms".equals(type)) {  

7.              return new SmsSender();  

8.          } else {  

9.              System.out.println("请输入正确的类型!");  

10.             return null;  

11.         }  

12.     }  

13. }  

我们来测试下:

1.  public class FactoryTest {  

2.    

3.      public static void main(String[] args) {  

4.          SendFactory factory = new SendFactory();  

5.          Sender sender = factory.produce("sms");  

6.          sender.Send();  

7.      }  

8.  }  

输出:this is sms sender!

22、多个工厂方法模式,是对普通工厂方法模式的改进,在普通工厂方法模式中,如果传递的字符串出错,则不能正确创建对象,而多个工厂方法模式是提供多个工厂方法,分别创建对象。关系图:

 

将上面的代码做下修改,改动下SendFactory类就行,如下:

[java] view plaincopypublic class SendFactory {  

   public Sender produceMail(){  

1.          return new MailSender();  

2.      }  

3.        

4.      public Sender produceSms(){  

5.          return new SmsSender();  

6.      }  

7.  }  

测试类如下:

[java] view plaincopy

1.  public class FactoryTest {  

2.    

3.      public static void main(String[] args) {  

4.          SendFactory factory = new SendFactory();  

5.          Sender sender = factory.produceMail();  

额 本文暂时没人评论 来添加一个吧

发表评论

必填

选填

选填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

控制面板
您好,欢迎到访网站!
随机文章
热门文章
热评文章
最近发表