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、本模式通过共享对象来减少系统中对象实例个数,从而减少内存消耗。
查看全文
相关阅读:
变量在函数内外的作用域 3
php中用大括号把?>和<?php框起来的作用
变量在函数内外的作用域 2
变量在函数内外的作用域
字母大小写对变量和函数的区别
require()和include()代码重用
str_place()替换函数
【开源框架】Android之史上最全最简单最有用的第三方开源库收集整理,有助于快速开发,欢迎各位网友补充完善
android SQLite使用SQLiteOpenHelper类对数据库进行操作
tomcat设置IP地址或者域名访问
原文地址:https://www.cnblogs.com/xiaobaigang/p/909839.html
最新文章
Passenger简介
document_createElement
JQueryEasyUI学习笔记(一)
Dom0级事件
dom操作例子
JS删除练习
定时器
数字电路与逻辑设计(第2版)
手绘图说电子元器件
中国近海典型油田开发实践
热门文章
室内分布系统规划设计手册
精解索尼爱立信手机电路原理与维修技术(二)
电磁炉维修从业技能全程通(不提供光盘内容)
你早该这样玩小米手机
煤炭工业“三废”资源综合利用
公路监理员一本通
地震地质灾害配电应急抢修培训教材
递归函数应少用
return()函数
变量在函数内外的作用域 3
Copyright © 2011-2022 走看看