zoukankan
html css js c++ java
享元模式
复合享元涉及的角色如下:
1、抽象享元角色
2、具体享元
3、复合享元(复合享元是由单纯具体享元复合而成的)//如果是简单享元这条没有
4、享元工厂
5、客户端
简单享元演示代码如下
using
System;
using
System.Collections.Generic;
using
System.Text;
using
System.Collections;
namespace
FlyweightFactory
{
class
Program
{
//
抽象享元
abstract
class
Cause
//
事业
{
abstract
public
void
OutInput(
string
name);
//
输出所从事的行业
}
//
具体享元(互联网)
class
IT : Cause
{
private
string
work
=
"
从事互联网行业
"
;
override
public
void
OutInput(
string
name)
{
Console.WriteLine(
"
{0} 是{1}
"
,
name, work);
}
}
//
具体享元(房地产)
class
House : Cause
{
private
string
work
=
"
从事房地产行业
"
;
override
public
void
OutInput(
string
name)
{
Console.WriteLine(
"
{0} 是{1}
"
,
name, work);
}
}
//
(享元工厂)
class
CauseFactory
{
private
Hashtable flyweights
=
new
Hashtable();
//
构造函数(享元工厂) 享元工厂作用:就是把多个对象的实例放在一起,好供客户端动态调用
public
CauseFactory()
{
flyweights.Add(
"
I
"
,
new
IT());
flyweights.Add(
"
H
"
,
new
House());
}
//
得到从事的事业(享元)
public
Cause GetCause(
string
key)
{
return
((Cause)flyweights[key]);
}
}
//
客户端
static
void
Main(
string
[] args)
{
string
MaYun
=
"
马云
"
;
string
WangShi
=
"
王石
"
;
CauseFactory f
=
new
CauseFactory();
//
根据不同类别判别从事那个行业
Cause c1
=
f.GetCause(
"
I
"
);
//
字母I对应对象IT行业
c1.OutInput(MaYun);
//
输出马云所从事的行业
Cause c2
=
f.GetCause(
"
H
"
);
//
字母H对应对象House行业
c2.OutInput(WangShi);
//
输出王石所从事的行业
}
}
}
享元模式要点
1、本设计模式主要解决面向对象的代价问题。
2、本模式通过共享对象来减少系统中对象实例个数,从而减少内存消耗。
查看全文
相关阅读:
前后端分离项目本地测试跨域问题配置
STS没有找到Dynamic Web Project
java常见面试题
log4jdbc 使用
Thymeleaf 入门
集成maven和Spring boot的profile 专题
ftp命令大全
windows下安装redis
linux安装环境
atmega328 熔丝
原文地址:https://www.cnblogs.com/xiaobaigang/p/909839.html
最新文章
phpstorm 开发php入门
ubuntu 自带截图工具快捷键盘
phpstorm快捷键
php 从7.0升级到7.2
如何在Ubuntu 18.04上安装Apache Web服务器
phpstrom 安装
js 弹窗并定时关闭
java ajax返回 Json 的 几种方式
可以直接用的文件读取类
自动调整linux系统时间和时区与Internet时间同步
热门文章
java 浅克隆(浅复制)和深克隆(深复制)
如何设置Ultraedit自动换行
Eclipse launch configuration----Eclipse运行外部工具
Centos mysql 安装及配置
CentOS安装squid代理服务器
zookeeper+dubbo集群
Druid监控Mybatis不显示SQL问题
Druid Monitor监控JavaSE,杀cmd端口进程
Apache 配置 WebSocket 协议
javaweb分页的后端实现
Copyright © 2011-2022 走看看