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("普洱茶");
    	}
    }
    
    
    
  • 相关阅读:
    iOS利用通知(NSNotification)进行传值
    yum gd linux
    discuz搬家
    快速上传到rackspace cdn工具turbolift swift 安装
    linux 文件属性、权限、所有人、所属组
    Tar压缩文件
    lamp安装手稿
    Mysql导出导入相关操作记录
    How to Install a Language Pack
    centos下开启htaccess
  • 原文地址:https://www.cnblogs.com/kungFuPander/p/11468336.html
Copyright © 2011-2022 走看看