「补课」进行时:设计模式(21)——享元模式 (2)

然后对 WebSite 和 ConcreteWebSite 的 use() 方法进行修改,添加 User 参数:

public abstract class WebSite { abstract void use(User user); } public class ConcreteWebSite extends WebSite { private String name; public ConcreteWebSite(String name) { this.name = name; } @Override void use(User user) { System.out.println("网站分类:" + name + " 用户:" + user.getName()); } }

最后修改一下 Client 类:

public class Client { public static void main(String[] args) { WebSiteFactory factory = new WebSiteFactory(); WebSite fx = factory.getWebSiteCategory("视频站"); fx.use(new User("tom")); WebSite fy = factory.getWebSiteCategory("视频站"); fy.use(new User("cat")); WebSite fz = factory.getWebSiteCategory("视频站"); fz.use(new User("nginx")); WebSite fa = factory.getWebSiteCategory("图文站"); fa.use(new User("apache")); WebSite fb = factory.getWebSiteCategory("图文站"); fb.use(new User("netty")); WebSite fc = factory.getWebSiteCategory("图文站"); fc.use(new User("jboss")); System.out.println("网站分类总数为:" + factory.getWebSiteCount()); } }

最终结果:

网站分类:视频站 用户:tom 网站分类:视频站 用户:cat 网站分类:视频站 用户:nginx 网站分类:图文站 用户:apache 网站分类:图文站 用户:netty 网站分类:图文站 用户:jboss 网站分类总数为:2

这样就可以协调内部与外部状态,哪怕接手了上千个网站的需求,只要要求相同或类似,实际开发代码也就是分类的那几种。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zypsfx.html