黑马程序员--基础加强--第三篇--单例设计模式,装饰者模式认识,专家模式,享元模式,模版方法设计模式

本文通过生动的例子介绍了单例设计模式与装饰者模式的基本原理及应用。单例模式确保一个类仅有一个实例,并提供了全局访问点;装饰者模式则允许在不改变原有对象的情况下动态增加其职责。

ASP.Net+Android+IOS开发.Net培训期待与您交流!

单例设计模式  

        在我们生活中,常常在我们生活中经常碰到这样的问题,比如银行跟多个ATM机的关系,客户在ATM机A存钱,然后在ATM机B取钱,ATM机B必须知道客户所存钱的数目才能让客户取钱,这是这两个ATM机都有客户在银行的对象,要想相互通信,保持数据唯一性,客户这个对象必须有且仅有一个。还有多个程序操作统一配置文件等例子,这就用到单例设计模式。
        单例设计模式算是一种解决这一类问题的通用方法,或者说是一种思想。那么怎么才能保证只有一个对象呢?首先,银行的对象不能让其他程序new出,这样的话只能让银行new出一个对象,其次,银行必须提供给ATM机公有的获取对象的接口。
public class ATM {
	java.util.Scanner input = new java.util.Scanner(System.in);
	Bank bank = Bank.getInstance();
}
public class Bank {
	private Card[] cards = new Card[100];
	
	//单例模式
	private Bank(){}
	
	public static Bank bank = new Bank();//饿汉式
	
	public static Bank getInstance(){
		return bank;
	}
	
	public Card[] getAllAcount(){
		return cards;
	}
       //单例模式
/* private Bank(){}private static Bank bank;public static Bank getInstance(){
		synchronized(Single.class){
			if(bank == null){//懒汉式
				bank = new Bank();
			}
		}	
		return bank;
	}
*/
}

装饰者模式 

        举一个例子,比如有很多只小鸟一同起飞,A,B,C,D,E,F,G,怎样让小鸟A飞的更快一些呢???飞的快不快是不是跟翅膀有关系呢?想让小鸟A飞的更快,可以给小鸟A加上一双机械翅膀,这样不就更快啦?这里,机械翅膀就是装饰小鸟A用的,没有机械翅膀小鸟也能飞,加上翅膀,只不过飞的更快一些,这里,在JAVA中机械翅膀就是装饰者模式的实例!   在JAVA中用到装饰者模式的就是缓冲区,BufferedReader和BufferedWriter。
       装饰者模式和继承的区别是:
1装饰者模式为所有能装饰的类提供统一接口,BufferedReader能对FileReader,LineNumberReader都可以,继承者是只对单个类来说的。
2如果以后类扩展了,因为是继承同一接口,装饰者模式还能用,但继承就得重新写子类,不利于扩展。
3装饰者模式和所有被装饰的类同属一个类,使得类之间的关系不想继承那么繁琐,臃肿。
public class CopyTest2{
	public static void main(String[] args){
		FileReader fr = null;
		FileWriter fw = null;
		BufferedReader br = null;
		BufferedWriter bw = null;
		String str = null;
		try{
			fr = new FileReader("D:/Test.txt");
			br = new BufferedReader(fr);
			fw = new FileWriter("E:/Test.txt");
			bw = new BufferedWriter(fw);
			while((str = br.readLine()) !=null){
				bw.write(str);
				bw.newLine();
				bw.flush();
			}
		}catch(IOException e){
			e.printStackTrace();
			throw new RuntimeException("文件找不到异常");
		}finally{
			if(br != null){
				try{
					br.close();
				}catch(IOException e){
					e.printStackTrace();
				}
			}
			if(bw != null){
				try{
					bw.close();
				}catch(IOException e){
					e.printStackTrace();
				}
			}
		}
	}
}

    



【直流微电网】径向直流微电网的状态空间建模与线性化:一种耦合DC-DC变换器状态空间平均模型的方法 (Matlab代码实现)内容概要:本文介绍了径向直流微电网的状态空间建模与线性化方法,重点提出了一种基于耦合DC-DC变换器状态空间平均模型的建模策略。该方法通过对系统中多个相互耦合的DC-DC变换器进行统一建模,构建出整个微电网的集中状态空间模型,并在此基础上实施线性化处理,便于后续的小信号分析与稳定性研究。文中详细阐述了建模过程中的关键步骤,包括电路拓扑分析、状态变量选取、平均化处理以及雅可比矩阵的推导,最终通过Matlab代码实现模型仿真验证,展示了该方法在动态响应分析和控制器设计中的有效性。; 适合人群:具备电力电子、自动控制理论基础,熟悉Matlab/Simulink仿真工具,从事微电网、新能源系统建模与控制研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①掌握直流微电网中多变换器系统的统一建模方法;②理解状态空间平均法在非线性电力电子系统中的应用;③实现系统线性化并用于稳定性分析与控制器设计;④通过Matlab代码复现和扩展模型,服务于科研仿真与教学实践。; 阅读建议:建议读者结合Matlab代码逐步理解建模流程,重点关注状态变量的选择与平均化处理的数学推导,同时可尝试修改系统参数或拓扑结构以加深对模型通用性和适应性的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值