享元设计模式

 

 

public class User {
    private String username;

    public User(String username) {
        this.username = username;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    @Override
    public String toString() {
        return "User{" +
                "username='" + username + '\'' +
                '}';
    }
}
public abstract class WebSite {

    public abstract void use(User user);
}
public class WebSiteExtends extends WebSite {

    //1.网站的类型
    private String type;

    public WebSiteExtends(String type) {

        this.type = type;
    }

    @Override
    public void use(User user) {
        System.out.println("网站的类型:"+type+"使用者:"+user.getUsername());
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }
}
/**
 * @Author zh
 * @Description 网站的工厂类
 * @Date 2021/12/16
 */
public class WebStieFactory {
    //1.网站的集合类型
    private Map<String,WebSiteExtends> map;

    public WebStieFactory(Map<String, WebSiteExtends> map) {
        this.map = map;
    }

    //依据tepe类型返回 webSite类型
    public WebSite getWebSite(String type){
        //从map找到key对应的值
        //可以先判断key是否存在map中
        Set<String> keys = map.keySet();
        if (keys.contains(type)){
            return  map.get(type);
        }

        return null;

    }


    public int getSize(){
        return map.size();
    }
}
public class TMain {
    public static void main(String[] args) {
        //创建工厂的map
        Map<String,WebSiteExtends> map =new HashMap<>();

        //准备数据
        WebSiteExtends qq =new WebSiteExtends("QQ");

        WebSiteExtends wx =new WebSiteExtends("WeiXin");

        //3.装入map
        map.put(qq.getType(),qq);
        map.put(wx.getType(),wx);

        //创建工厂对象
        WebStieFactory factory =new WebStieFactory(map);

        //5.使用的时修改:提供type  调用各自的use方法
        WebSite qq1 = factory.getWebSite("QQ");

        //6.准备用户
        User user1 =new User("马化腾");

        User user2 =new User("马化腾2");

        qq1.use(user1);
        qq1.use(user2);


    }
}

 

posted on 2021-12-17 10:56  无心睡眠A8  阅读(22)  评论(0)    收藏  举报