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

    工厂模式:
    在创建对象时,不会暴漏给调用者具体创建逻辑,是通过一个公共的接口指向创建的对象。

    介绍

    意图:创建一个创建对象的接口,让其子类来决定实例化哪一个工厂类,工厂模式使创建过程延迟到子类进行。
    何时使用:明确不同情况下创建不同的实例。
    关键代码:创建对象延迟到字类进行。
    优点:
    只需知道名称就可以了
    屏蔽了产品的具体实现, 调用者只需关心产品的接口。
    扩展性高
    缺点:
    每创建一个产品,都需要具体实现类和实现工厂,使得程序中的类成倍增加,在一定程度上增加了系统的复杂度,同时增加了系统类的依赖。
    注意事项:简单类无需工厂模式。

    实现(使用枚举)

    // 枚举工厂
    package cn.domin.design.factory;
    
    public enum Factory {
    	
    	PUER("puer", new Puer()),
    	DRAGONWELL("dragonwell", new DragonWell());
    	
    	private String name;
    	private Tea tea;
    	
    	public static Tea getTeas(String name) {
    		
    		for(Factory fac: Factory.values()) {
    			if (fac.getName().equalsIgnoreCase(name)) {
    				return fac.getTea();
    			}
    		}
    		return null;
    	}
    	
    	public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    	public Tea getTea() {
    		return tea;
    	}
    	public void setTea(Tea tea) {
    		this.tea = tea;
    	}
    	private Factory(String name, Tea tea) {
    		this.name = name;
    		this.tea = tea;
    	}
    
    }
    // 接口
    package cn.domin.design.factory;
    
    public interface Tea {
    	
    	public void drink();
    
    }
    
    // 子类对象
    package cn.domin.design.factory;
    
    public class Puer implements Tea{
    
    	@Override
    	public void drink() {
    		System.out.println("普洱茶");
    	}
    }
    
    
    
  • 相关阅读:
    Speex for Android
    反射(高大上)、类的内置方法
    hashlib摘要算法模块,logging日志,configparser配置文件模块
    抽象类,接口类,封装,property,classmetod,statimethod
    面对对象三大特征:继承 多态(鸭子类型)(面试题)
    面向对象命名空间及组合(面试题)
    初始面向对象
    模块与包
    常用模块
    列表表达式,生成器表达式,
  • 原文地址:https://www.cnblogs.com/kungFuPander/p/11468336.html
Copyright © 2011-2022 走看看