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