• JavaSE:普通工厂模式


    1.  类图结构

    2.  代码

    public interface Sender {
        
        // 自定义抽象方法,来描述发送的行为
        void send();
    }
    public class MailSender implements Sender {
        
        @Override
        public void send() {
            print("正在发送邮件...");
        }
    }
    public class SmsSender implements Sender {
        
        @Override
        public void send() {
            print("正在发送短信...");
        }
    }

    工厂类:

    public class SendFactory {
        
        // 自定义成员方法,实现对象的创建
        public Sender produce (String type){

         // <1> 拓展性和可维护性的体现:
         // print("随便加一句打印进行测试..."); 
    if ( "mail".equals(type) ){ return new MailSender(); } if ( "sms".equals(type) ){ return new SmsSender(); } return null; } }

    测试类:

    public class SendFactoryTest {
    
        main() {
    
            // 1. 声明工厂类型的引用,指向工厂类类型的对象
            SendFactory sf = new SendFactory();
    // 2. 调用工厂类中的生产方法,来实现sender对象的创建 Sender sender = sf.produce("mail");

         // 存在缺点,比如说:
         //  
    Sender sender = sf.produce("mailllllllllllllll");
    // sender为空,会发生空指针异常
    // (一旦传递的字符串出错,则不能正确创建对象)
          
    // 3. 使用sender对象,调用send()方法,模拟发送数据的行为 sender.send(); // 输出: "正在发送邮件..."

    // 这样写的优点:拓展性和可维护性更强, 尤其是创建大量对象的前提下 (见<1>


         ================== 等价于 ========================================
         Sender sender1 = new MailSender();
         sender1.send();  

         // 这样写的优点: 代码简单,可读性强, 在创建单个对象时有优势
          
    } }
  • 相关阅读:
    【Intellij Idea】设置JDK
    MarkDown换行
    Git 查看/修改用户名、邮箱
    JavaScript对象
    Javascript事件
    第十次会议
    第九次会议
    详细设计文档
    第八次会议
    第七次会议
  • 原文地址:https://www.cnblogs.com/JasperZhao/p/14954208.html
Copyright © 2020-2023  润新知