• 抽象工厂模式


    个人博客

    http://www.milovetingting.cn

    抽象工厂模式

    模式介绍

    抽象工厂模式,也是创建型设计模式之一。

    模式的定义

    为创建一组相关或者相互依赖的对象提供一个接口,而不需要指定它们的具体类。

    使用场景

    一个对象族有相同的约束时可以使用抽象工厂模式。如,Android,ios都有短信软件和拨号软件,两者都属于软件的范畴,但它们所在的操作系统平台不一样,这时可以使用抽象工厂模式来实现。

    简单实现

    抽象产品类

    public abstract class AbstractProductA {
    
    	public abstract void method();
    
    }
    
    public abstract class AbstractProductB {
    	
    	public abstract void method();
    
    }
    

    抽象工厂类

    public abstract class AbstractFactory {
    	
    	public abstract AbstractProductA createProductA();
    	
    	public abstract AbstractProductB createProductB();
    
    }
    

    具体产品类

    public class ProductA1 extends AbstractProductA{
    
    	@Override
    	public void method() {
    		
    	}
    
    }
    
    public class ProductA2 extends AbstractProductA{
    
    	@Override
    	public void method() {
    		
    	}
    
    }
    
    public class ProductB1 extends AbstractProductB{
    
    	@Override
    	public void method() {
    		
    	}
    
    }
    
    public class ProductB2 extends AbstractProductB {
    
    	@Override
    	public void method() {
    
    	}
    
    }
    

    具体工厂类

    public class Factory1 extends AbstractFactory{
    
    	@Override
    	public AbstractProductA createProductA() {
    		return new ProductA1();
    	}
    
    	@Override
    	public AbstractProductB createProductB() {
    		return new ProductB1();
    	}
    
    }
    
    public class Factory2 extends AbstractFactory {
    
    	@Override
    	public AbstractProductA createProductA() {
    		return new ProductA2();
    	}
    
    	@Override
    	public AbstractProductB createProductB() {
    		return new ProductB2();
    	}
    
    }
    

    小结

    抽象工厂模式优点:

    分离接口与实现

    抽象工厂模式缺点:

    一是类文件的爆炸性增加,二是不太容易扩展新的产品类,因为每增加一个产品类就需要修改抽象工厂。

  • 相关阅读:
    Octet string 解析
    c#之process类相关整理
    C# Process.Start()方法详解(转)
    c语言字符串比较函数strcmp
    C# 启动EXE文件及带启动参数EXE
    C语言中两个相等的char值比较 结果为false
    C语言strcmp()函数:比较字符串(区分大小写)
    char数组与char指针
    (转)在.net中序列化读写xml方法的总结
    PHP实现站点pv,uv统计(三)
  • 原文地址:https://www.cnblogs.com/milovetingting/p/12203780.html
Copyright © 2020-2023  润新知