zoukankan      html  css  js  c++  java
  • 03.创建型————抽象工厂模式

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

      

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

      

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

      

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

      

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

      

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

      

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

      

    package Create.c.AbstractFactory;
    
    //业务实现类工厂类
    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.c.AbstractFactory;
    
    
    //业务实现类工厂类
    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.c.AbstractFactory;
    
    
    //业务调用类
    public class Client {
    public static void main(String[] args) {
    	Factory fa = new GuangDongFactory();
    	Salary sa = fa.createSalary();
    	Tax tax =  fa.createTax();
    	sa.calcSalary();
    	tax.calcTax();
    	
    	fa = new HeBeiFactory();
    	sa = fa.createSalary();
    	tax =fa.createTax();
    	sa.calcSalary();
    	tax.calcTax();
    	
    	
    }
    }
    

      

    优点:所有实现类设计到一个工厂类里面,客户端调用变得非常简单,并且如果需要更换一个系列的产品,只需要更换一个工厂类即可

    缺点:如果涉及需求变更或添加,则需要修改抽象工厂类,并同时修改实现这个抽象工厂类的具体实现类,添加额外编码的工作量(跟工厂方法模式相同)

  • 相关阅读:
    java swagger ui 添加header请求头参数
    springboot集成swagger添加消息头(header请求头信息)
    @Valid 注解的使用
    svn创建新分支报错:svn: E155015: Aborting commit: XXX remains in conflict
    部署JAX-WS Web服务作为战争中的Apache Tomcat(Deploying JAX-WS webservice as War in Apache Tomcat)
    weblogic项目转为tomcat之后出现的问题
    杂七杂八的笔记🥤
    文档备忘录
    装备记事本
    duff's device
  • 原文地址:https://www.cnblogs.com/ciade/p/5095284.html
Copyright © 2011-2022 走看看