zoukankan      html  css  js  c++  java
  • 无废话设计模式(9)结构型模式--享元模式

    0-前言

      享元模式定义:运用共享技术有效地支持大量细粒度的对象。

    1-实现

    1-1、简单UML图:

     1-2、代码实现

    //1、抽象父类(网站父类)
    abstract class Website
    {
        public abstract  void Use( String username);
    }
    
    //2、具体共享类(具体网站类)
    class  ConcreteWebsite extends Website
    {
        private  String websiteclassname;
        public  ConcreteWebsite(String name)
        {
            this.websiteclassname = name;
        }
    
        @Override
        public void Use(String username)
        {
            System.out.println("网站分类:"+ websiteclassname +"--用户:"+username);
        }
    }
    
    //3、享元工厂类(网站工厂)
    class WebsiteFactory
    {
        private Hashtable<String , Website> websites =new Hashtable<>();
    
        public Website getWebsite(String classname)
        {
            if (!websites.containsKey(classname))
            {
                websites.put(classname, new ConcreteWebsite(classname));
            }
            return websites.get(classname);
        }
    }

    客户端:

            WebsiteFactory wf = new WebsiteFactory();
            Website fs = wf.getWebsite("企业官网");
            fs.Use("张三");
    
            Website fs1 = wf.getWebsite("博客");
            fs1.Use("李四");
    
            Website fs2 = wf.getWebsite("小程序");
            fs2.Use("王五");

    运行结果:

    2-应用场景简单总结

    1、一个程序使用了大量对象时;

    2、由于使用了大量对象造成比较大的存储开销时;

    3、对象的很多状态都可以改变为外部状态时;

  • 相关阅读:
    软件杯华为ModelArts平台
    软件杯第一阶段博客
    《系统架构》阅读笔记05
    第11周周博客
    测试面试题
    杭电2014 (第一次用vector ac题目)
    杭电 2013 猴子吃桃 递归解法&循环解法
    杭电2012 质数问题
    杭电2629 Identity Card
    杭电1170
  • 原文地址:https://www.cnblogs.com/yanghj/p/13425861.html
Copyright © 2011-2022 走看看