博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java常用设计模式--享元模式简单实例
阅读量:5018 次
发布时间:2019-06-12

本文共 2300 字,大约阅读时间需要 7 分钟。

package com.ruanyun; import java.util.HashMap; import java.util.Map; /**  * @Auther: maxw  * @Date: 2018/11/21 09:47  * @Description:享元模式:“享”就是分享之意,指一物被众人共享,而这也正是该模式的终旨所在。  *  享元模式有点类似于单例模式,都是只生成一个对象来被共享使用。这里有个问题,那就是对共享对象的修改,为了避免出现这种情况,我们将这些对象的公共部分,或者说是不变化的部分抽取出来形成一个对象。这个对象就可以避免到修改的问题。  *  享元的目的是为了减少不必要额外的内存消耗,将多个对同一对象的访问集中起来,不必为每个访问者创建一个单独的对象,以此来降低内存的消耗。  *  享元模式使用的场景:当我们项目中创建很多对象,而且这些对象存在许多相同模块,这时,我们可以将这些相同的模块提取出来采用享元模式生成单一对象,再使用这个对象与之前的诸多对象进行配合使用,这样无疑会节省很多空间。  */ public class Test9 {
public static void main(String args[]){
String yundong ="足球"; for(int i=0;i<5;i++){
TiYuGuan tiYuGuan = JianZhuFactory.getTyg(yundong); tiYuGuan.setName("合肥体育馆"); tiYuGuan.setShape("椭圆形"); tiYuGuan.setYongtu("比赛"); tiYuGuan.use(); } } } //定义一个建筑接口 interface Jianzhu{
void use(); } //创建一个体育馆 class TiYuGuan implements Jianzhu{
private String name; private String shape; private String yongtu; private String yundong; public TiYuGuan(String yundong) {
this.yundong = yundong; } public String getYongtu() {
return yongtu; } public void setYongtu(String yongtu) {
this.yongtu = yongtu; } public String getName() {
return name; } public void setName(String name) {
this.name = name; } public String getShape() {
return shape; } public void setShape(String shape) {
this.shape = shape; } public String getYundong() {
return yundong; } public void setYundong(String yundong) {
this.yundong = yundong; } @Override public void use() {
System.out.println("该体育馆被使用于"+yongtu+",项目为:"+ yundong+",场地形状为:"+shape+",场地名称为:"+name+",对象:"+this); } } //需要用到工厂类 建筑工厂 可以产出体育馆等建筑 class JianZhuFactory{
private static final Map
tygs =new HashMap
(); public static TiYuGuan getTyg(String yundong){
TiYuGuan tyg = tygs.get(yundong); if(tyg==null){
tygs.put(yundong,new TiYuGuan(yundong)); } return tygs.get(yundong); } public static int getSize(){
return tygs.size(); } }

 

 

转载于:https://www.cnblogs.com/maxiw/p/9993549.html

你可能感兴趣的文章