java memento_java设计模式进阶_memento

//

//

// Generated by StarUML(tm) Java Add-In

//

// @ Project : Untitled

// @ File Name : StarMemento.java

// @ Date : 2016/8/30

// @ Author :

//

//

public interface StarMemento {

}

//

//

// Generated by StarUML(tm) Java Add-In

//

// @ Project : Untitled

// @ File Name : StarMementoInternal.java

// @ Date : 2016/8/30

// @ Author :

//

//

public class StarMementoInternal implements StarMemento {

private StarType type;

private int ageYears;

private int massTons;

public StarType getType() {

return type;

}

public void setType(StarType type) {

this.type = type;

}

public int getAgeYears() {

return ageYears;

}

public void setAgeYears(int year) {

this.ageYears = year;

}

public int getMassTons() {

return massTons;

}

public void setMassTons(int massTons) {

this.massTons = massTons;

}

}

//

//

// Generated by StarUML(tm) Java Add-In

//

// @ Project : Untitled

// @ File Name : Star.java

// @ Date : 2016/8/30

// @ Author :

//

//

public class Star {

private StarType type;

private int ageYears;

private int massTons;

public Star(StarType type, int startAge, int startMass) {

this.type = type;

this.ageYears = startAge;

this.massTons = startMass;

}

public void timePasses() {

ageYears *= 2;

massTons *= 8;

switch(type)

{

case RED_GIANT:

type = StarType.WHITE_DWARF;

break;

case SUN:

type = StarType.RED_GIANT;

break;

case SUPERNOVA:

type = StarType.DEAD;

break;

case WHITE_DWARF:

type = StarType.SUPERNOVA;

break;

case DEAD:

ageYears *= 2;

massTons = 0;

break;

default:

break;

}

}

public StarMemento getMemento() {

StarMementoInternal state = new StarMementoInternal();

state.setAgeYears(ageYears);

state.setMassTons(massTons);

state.setType(type);

return state;

}

public void setMemento(StarMemento memento) {

StarMementoInternal state = (StarMementoInternal)memento;

this.type = state.getType();

this.ageYears = state.getAgeYears();

this.massTons = state.getMassTons();

}

public String toString() {

return String.format("%s age: %d years mass: %d tons", type.toString(),ageYears,massTons);

}

}

public enum StarType {

SUN("sun"),//太阳

RED_GIANT("red giant"),//巨人

WHITE_DWARF("white dwarf"),//白色-矮人

SUPERNOVA("supernova"),//超新星

DEAD("dead star"),//废星

UNDEFINED("")//未命名

;

private String title;

StarType(String title){

this.title = title;

}

public String toString()

{

return title;

}

}

import java.util.Stack;

public class App {

public static void main(String[] args) {

Stack states = new Stack<>();

Star star = new Star(StarType.SUN,10000000,500000);

System.out.println(star);

states.add(star.getMemento());

star.timePasses();

System.out.println(star);

states.add(star.getMemento());

star.timePasses();

System.out.println(star);

states.add(star.getMemento());

star.timePasses();

System.out.println(star);

states.add(star.getMemento());

star.timePasses();

System.out.println(star);

while(states.size() > 0)

{

star.setMemento(states.pop());

System.out.println(star);

}

}

}

/*sun age: 10000000 years mass: 500000 tons red giant age: 20000000 years mass: 4000000 tons white dwarf age: 40000000 years mass: 32000000 tons supernova age: 80000000 years mass: 256000000 tons dead star age: 160000000 years mass: 2048000000 tons supernova age: 80000000 years mass: 256000000 tons white dwarf age: 40000000 years mass: 32000000 tons red giant age: 20000000 years mass: 4000000 tons sun age: 10000000 years mass: 500000 tons */

Matlab基于粒子群优化算法及鲁棒MPPT控制器提高光伏并网的效率内容概要:本文围绕Matlab在电力系统优化与控制领域的应用展开,重点介绍了基于粒子群优化算法(PSO)和鲁棒MPPT控制器提升光伏并网效率的技术方案。通过Matlab代码实现,结合智能优化算法与先进控制策略,对光伏发电系统的最大功率点跟踪进行优化,有效提高了系统在不同光照条件下的能量转换效率和并网稳定性。同时,文档还涵盖了多种电力系统应用场景,如微电网调度、储能配置、鲁棒控制等,展示了Matlab在科研复现与工程仿真中的强大能力。; 适合人群:具备一定电力系统基础知识和Matlab编程能力的高校研究生、科研人员及从事新能源系统开发的工程师;尤其适合关注光伏并网技术、智能优化算法应用与MPPT控制策略研究的专业人士。; 使用场景及目标:①利用粒子群算法优化光伏系统MPPT控制器参数,提升动态响应速度与稳态精度;②研究鲁棒控制策略在光伏并网系统中的抗干扰能力;③复现已发表的高水平论文(如EI、SCI)中的仿真案例,支撑科研项目与学术写作。; 阅读建议:建议结合文中提供的Matlab代码与Simulink模型进行实践操作,重点关注算法实现细节与系统参数设置,同时参考链接中的完整资源下载以获取更多复现实例,加深对优化算法与控制系统设计的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值