• 技术文章 >Java >java教程

    Java 实现抽象工厂模式的具体代码详解

    黄舟黄舟2017-03-18 10:49:56原创963
    抽象工厂模式

    里面有几个概念:抽象工厂实体工厂抽象产品实体产品

    抽象工厂:定义创建产品的抽象方法

    实体工厂:具体的创建哪种产品

    抽象产品:一个接口或基类

    实体产品:实现具体功能,或派生

    类图


    //抽象产品1
    public interface IProduct1 {
    	public void show();
    }
    //抽象产品2
    public interface IProduct2 {
    	public void show();
    }
    //实体产品1
    public class Product1 implements IProduct1 {  
        public void show() {  
            System.out.println("创建了1型产品");  
        }  
    }
    //实体产品2
    public class Product2 implements IProduct2 {
    	public void show() {
    		System.out.println("创建了2型产品");
    	}
    }
    /*
     * 1A 1B属于Product1 同一产品等级结构中
     * 2A 2B属于Product2
     */
    public class GradeProduct1A extends Product1 {
    
    	@Override
    	public void show() {
    		super.show();
    		System.out.println("这是产品1下的:产品A");
    	}
    	
    }
    public class GradeProduct1B extends Product1 {
    
    	@Override
    	public void show() {
    		super.show();
    		System.out.println("这是产品1下的:产品B");
    	}
    }
    public class GradeProduct2A extends Product2 {
    
    	@Override
    	public void show() {
    		super.show();
    		System.out.println("这是产品2下的:产品A");
    	}
    }
    public class GradeProduct2B extends Product2 {
    
    	@Override
    	public void show() {
    		super.show();
    		System.out.println("这是产品2下的:产品B");
    	}
    }
    //抽象工厂 创建不同的抽象产品
    public interface IFactory {
    	public IProduct1 createProduct1A();//1类产品 型号A
    	public IProduct1 createProduct1B();//1类产品 型号B
    	public IProduct2 createProduct2A();//2类产品 型号A
    	public IProduct2 createProduct2B();//2类产品 型号B
    }
    //实体工厂 创建实体产品,返回类型为抽象产品
    public class Factory implements IFactory {
    
    	public IProduct1 createProduct1A() {
    		return new GradeProduct1A();
    	}
    
    	public IProduct1 createProduct1B() {
    		return new GradeProduct1B();
    	}
    
    	public IProduct2 createProduct2A() {
    		return new GradeProduct2A();
    	}
    
    	public IProduct2 createProduct2B() {
    		return new GradeProduct2B();
    	}
    }
    /*
     * 抽象工厂模式:用来创建一组相关或者相互依赖的对象
     * 
     * 流程:抽象工厂,实体工厂		生产产品
     * 		抽象产品,实体产品		实现产品功能
     * 缺点:当需要增加一个产品(由抽象和实体构成),工厂都需要更改
     */
    public class Test4Abstract {
    	public static void main(String[] args) {
    		IFactory factory = new Factory();
    		IProduct1 product1a = factory.createProduct1A();
    		product1a.show();
    		IProduct1 product1b = factory.createProduct1B();
    		product1b.show();
    		
    		IProduct2 product2a = factory.createProduct2A();
    		product2a.show();
    		IProduct2 product2b = factory.createProduct2B();
    		product2b.show();
    	}
    }

    相关文章:

    JAVA设计模式之抽象工厂模式

    PHP简单工厂模式、工厂方法模式和抽象工厂模式比较

    php面向对象开发之——抽象工厂模式

    以上就是Java 实现抽象工厂模式的具体代码详解的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:Java 实现简单工厂模式的示例代码(图) 下一篇:Java 实现建造者(Builder)模式的代码示例

    相关文章推荐

    • 动态代理的两种方式是什么• JAVA-5NIO之Selector• java对象的序列化和反序列化• java提高篇(六)-----关键字static• MyBatis整体预览(一)

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网