• 04.创建型————创建者模式


    package Create.d.Builder;
    
    //业务接口
    public interface Tax {
    	void calcTax();
    }
    

      

    package Create.d.Builder;
    
    //业务接口
    public interface Salary {
    	void calcSalary();
    }
    

      

    package Create.d.Builder;
    
    //业务实现类
    public class HeBeiTax implements Tax {
    
    	@Override
    	public void calcTax() {
    		// TODO Auto-generated method stub
    		System.out.println("开始计算河北子公司的税收!");
    	}
    
    }
    

      

    package Create.d.Builder;
    
    //业务实现类
    public class HeBeiSalary implements Salary {
    
    	@Override
    	public void calcSalary() {
    		// TODO Auto-generated method stub
    		System.out.println("开始计算河北子公司的薪资!");
    	}
    
    }
    

      

    package Create.d.Builder;
    
    //业务实现类
    public class GuangDongTax implements Tax {
    
    	@Override
    	public void calcTax() {
    		// TODO Auto-generated method stub
    		System.out.println("开始计算广东子公司的税收!");
    	}
    
    }
    

      

    package Create.d.Builder;
    
    //业务实现类
    public class GuangDongSalary implements Salary {
    
    	@Override
    	public void calcSalary() {
    		// TODO Auto-generated method stub
    		System.out.println("开始计算广东子公司的薪资!");
    	}
    
    }
    

      

    package Create.d.Builder;
    
    //工厂接口
    public interface Factory {
      Salary createSalary();
      Tax createTax();
    }
    

      

    package Create.d.Builder;
    
    //业务实现类工厂类
    public class HeBeiFactory implements Factory {
    
    	@Override
    	public Salary createSalary() {
    		// TODO Auto-generated method stub
    		return new HeBeiSalary();
    	}
    
    	@Override
    	public Tax createTax() {
    		// TODO Auto-generated method stub
    		return new HeBeiTax();
    	}
    
    }
    

      

    package Create.d.Builder;
    
    //业务实现类工厂类
    public class GuangDongFactory implements Factory {
    
    	@Override
    	public Salary createSalary() {
    		// TODO Auto-generated method stub
    		return new GuangDongSalary();
    	}
    
    	@Override
    	public Tax createTax() {
    		// TODO Auto-generated method stub
    		return new GuangDongTax();
    	}
    
    }
    

      

    package Create.d.Builder;
    
    
    //创建者类
    public class Builder {
    		Factory fa;
    		public Builder() {
    			super();
    		}
    		
    		public Builder(Factory fa) {
    			super();
    			this.fa = fa;
    		}
    		
    		//封装业务实现类调用
    		public void build(){
    			Salary sa = fa.createSalary();
    			Tax tax = fa.createTax();
    			sa.calcSalary();
    			tax.calcTax();
    		}
    		
    		
    }
    

      

    package Create.d.Builder;
    
    //业务调用类
    public class Client {
    public static void main(String[] args) {
    	Builder builder = new Builder(new HeBeiFactory());
    	builder.build();
    	
    	builder =  new Builder(new GuangDongFactory());
    	builder.build();
    	
    	
    }
    }
    

     

    优点:客户端不再负责对象的创建和组装,而是把这个任务交给具体的创建类和组装类,只负责对对象的调用。

    缺点: 如果产品之间差异非常大,需要编写多个创建者类才能实现,此时应考虑使用同工厂模式一同使用,效果更好。

  • 相关阅读:
    php增加自动刷新当前页面
    liunx环境下安装mysql5.7及以上版本
    mysql的主从级联复制的配置
    windowns常用命令
    liunx之使用(mount)挂载技术
    在burpsuite中为什么不能选中设置好的代理?
    c++中向任意目录下写文件
    Hbase——JavaAPI操作笔记
    每周总结(6)(补)
    每周总结(5)
  • 原文地址:https://www.cnblogs.com/ciade/p/5095304.html
Copyright © 2020-2023  润新知