zoukankan      html  css  js  c++  java
  • 抽象工厂模式

    个人博客

    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();
    	}
    
    }
    

    小结

    抽象工厂模式优点:

    分离接口与实现

    抽象工厂模式缺点:

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

  • 相关阅读:
    Core Location定位
    iOS中的round/ceil/floorf函数略解
    NSDateFormatter相关整理
    iOS使用NSMutableAttributedString 实现富文本(不同颜色字体、下划线等)
    自定义带DropDownTable的TextField(事件)
    自定义带DropDownTable的TextField(UI部分)
    读取json文件内容
    在UITextview中添加链接属性的文字
    自定义弹出框Alter
    给UIView加上点击事件
  • 原文地址:https://www.cnblogs.com/milovetingting/p/12203780.html
Copyright © 2011-2022 走看看