首页 > 其他分享 >《图解设计模式》 第九部分 避免浪费

《图解设计模式》 第九部分 避免浪费

时间:2024-11-05 13:42:41浏览次数:1  
标签:real 设计模式 String private className 避免浪费 图解 public name

第二十章 Flyweight 模式

public class BigcharFactory{
  //这里对使用到的内容进行了缓存
  private HashMap pool = new HashMap();

  //有则直接取,无则创建并保存到缓存。
  public synchronized BigChar getBigChar(char charname){
    BigChar bc = (BigChar) pool.get("" + charname);
    if(bc == null){
      bc = new BigChar(charname);
      pool.put("" + charname, bc);
    }
    return bc;
  }
}

第二十一章 proxy 模式

其实看看代码,我们会发现,直接使用 Printer 从代码上来讲区别不大但是正如这部分章节所讲的 避免浪费 。Proxy 模式保证了 Printer 对象只有在使用到的时候才初始化。在大型项目中,如果 Printer 是个很耗资源的类,可以起到节省资源的作用。

public class PrinterProxy implements Printable {
    private String name;
    private Printer real;
    private String className;

    public PrinterProxy() {
    }

    public PrinterProxy(String name, String className) {
        this.name = name;
        this.className = className;
    }

    public synchronized void setPrinterName(String name) {
        if (real != null) {
            real.setPrinterName(name);
        }
        this.name = name;
    }

    public String getPrinterName() {
        return name;
    }

    //当使用的时候才 初始化
    public void print(String string) {
        realize();
        real.print(string);
    }

    private synchronized void realize() {
        if (real == null) {
            try {
                real = (Printer) Class.forName(className).newInstance();
                real.setPrinterName(name);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}

标签:real,设计模式,String,private,className,避免浪费,图解,public,name
From: https://www.cnblogs.com/dasuxd/p/18527692

相关文章

  • 《图解设计模式》 第八部分 管理状态
    第17章Observer模式publicabstractclassNumberGenerator{privateArrayListobserverList=newArrayList();/*部分代码省略*///加入基础类,当需要通知的时候通知publicvoidaddObserver(Observerobserver){observerList.add(observer);}pub......
  • 常见设计模式-工厂模式
    文章目录1.简单工厂模式2.工厂方法模式3.抽象工厂模式设计模式七大原则工厂模式是一种创建型设计模式,它提供了一种创建对象的接口,但由子类决定要实例化的类是哪一个。工厂模式让一个类的实例化延迟到其子类。工厂模式主要分为三种:简单工厂模式、工厂方法模式......
  • 《图解设计模式》 第七部分 简单化
    Facade模式publicclassMain{publicstaticvoidmain(String[]args){PageMaker.makeWelcomePage("[email protected]","welcom.html");}}publicclassPageMaker{publicstaticvoidmakeWelcompage(Stringmailaddr,Stringfile......
  • 《图解设计模式》 第五部分 访问数据结构
    第十三章Visotor模式publicclassfileextendsentry{/*省略*/puhblicvoidaccept(Visitorv){v.visit(this);}}publicclassMain{publicstaticvoidmain(Stringargs){Directoryrootdir=newDirctory("root");/*省略*/ro......
  • 《图解设计模式》 第五部分 一致性
    第11章Composite模式文中举例文件夹系统,简单说明:这里可以讲File和dirctory看作一种东西Entry。在Entry的基础上分化两者,构成结构。能够使容器与内容具有一致性,创造出递归结构。第12章Decorator模式publicclassMain{publicstaticvoidmain(String[]ar......
  • 设计模式小结一策略(strategy)模式
    先上结论:    一个不懂设计模式的程序员,是绝对写不好程序代码的,心中没有设计模式的概念,你写出代码,内行一看就是个草台班子。这篇文章仅是个人设计模式学习的一篇笔记,算是抛砖引玉,详细的概念和用法还需要自己敲代码一个个验证体会。开干!一、程序设计的基本原则:1、封......
  • 《图解设计模式》 第三部分 生成实例
    第五章Singleton模式单例模式应该是开发中用的比较多的模式。这里我只记一个知识点。多线程下安全的单例模式的一个知识点publicclassSingleton{publicstaticInstanceClassinstance=null;publicstaticSingletongetInstance(){if(instance==null){......
  • MySQL8.0安装配置教程【超级详细图解】
    万分感谢.参考文章内容:https://blog.csdn.net/m0_73442728/article/details/131359479万分感谢.参考文章内容:https://blog.csdn.net/qq_40187702/article/details/130618805目录**一、MySQL下载与安装二、MySQL安装三、MySQL连接测试四、配置环境变量一、MySQL下载与安......
  • 《图解设计模式》 第二部分 交给子类
    交给子类TeamplateMethod模式--将具体任务交给子类核心代码publicabstractclassAbstractDisplay{publicabstractvoidopen();publicabstractvoidprint();publicabstractvoidclose();publicfinnalvoiddisplay(){open();for(inti=0;......
  • 《图解设计模式》 第一部分,适应设计模式
    第一章Iterator模式--一个一个遍历为什么要使用Iterator模式?正常遍历我们使用for循环即可,为什么要在集合引入Iterator这个角色呢?egwhile(it.hasNext()){Bookbook=(Book)it.next();System.out.println(book.getName());}这里的while循环并不依赖于Boo......