zoukankan      html  css  js  c++  java
  • 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();
    	
    	
    }
    }
    

     

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

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

  • 相关阅读:
    Oracle数据库的经典问题 snapshot too old是什么原因引起的
    在服务器上排除问题的头五分钟
    MySQL的redo log结构和SQL Server的log结构对比
    MySQL优化---DBA对MySQL优化的一些总结
    事务分类
    扩展HT for Web之HTML5表格组件的Renderer和Editor
    iOS平台快速发布HT for Web拓扑图应用
    HT for Web的HTML5树组件延迟加载技术实现
    Zip 压缩、解压技术在 HTML5 浏览器中的应用
    百度地图、ECharts整合HT for Web网络拓扑图应用
  • 原文地址:https://www.cnblogs.com/ciade/p/5095304.html
Copyright © 2011-2022 走看看