14.设计模式-享元模式

//1.定义抽象类
//2.定义接口实现
//3.定义工厂类
//4.特有属性
//5.测试

public abstract class Website {
public abstract void use(User user);
}

public class User {

private String name;

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

}

public class ConcreteWebSite extends Website{

//共享属性
private String type=""; //类型

public ConcreteWebSite(String type) {
    this.type = type;
}

@Override
public void use(User user) {
    //user 特有属性
    System.out.println("类型:"+type+",name="+user.getName());
}

}

package com.serlyf.flyweigt;

import java.util.HashMap;

//网站工厂类
public class WebsiteFactory {
//集合,充当池的作用
private HashMap<String, ConcreteWebSite> pool = new HashMap<String, ConcreteWebSite>();

//根据类型,返回一个结果,如果没有就创建,并放入池中并返回

public Website getWebSiteCategory(String type) {
    //没有就创建一个并放入池中
    if (!pool.containsKey(type)) {
        pool.put(type, new ConcreteWebSite(type));
    }

    return (Website) pool.get(type);
}

}

public class Test {

public static void main(String[] args) {
    WebsiteFactory factory=new WebsiteFactory();
    Website website1 =factory.getWebSiteCategory("AAA");
    User user=new User();
    user.setName("张三");
    website1.use(user);
}

}

posted @ 2022-10-08 21:55  NIANER2011  阅读(12)  评论(0编辑  收藏  举报