设计模式-装饰模式

        装饰模式(Decorator):动态地给一个对象添加一些额外的职责,就增加功能来说,装饰者比生成子类更灵活。

        

package com.decorator;

public abstract class Component {
	public abstract void operation();
}
package com.decorator;

public class ConcreteComponent extends Component{

	@Override
	public void operation() {
		System.out.println("具体操作的对象。");
	}

}
package com.decorator;

public abstract class Decorator extends Component{
	protected Component component;
	public void setComponent(Component component) {
		this.component = component;
	}
	
	public void operation() {
		if(component != null) {
			component.operation();
		}
	}
}
package com.decorator;

public class ConcreteDecoratorA extends Decorator{
	private String addedState;
	
	public void operation() {
		super.operation();
		addedState = "New State";
		System.out.println("具体装饰对象A的操作");
	}
	
	
}
package com.decorator;

public class ConcreteDecoratorB extends Decorator{
	
	public void operation() {
		super.operation();
		addedBehavior();
		System.out.println("具体装饰对象B的操作");
	}
	
	private void addedBehavior() {
		System.out.println("B类独有的方法");
	}
}
package com.decorator;

public class Test {
	public static void main(String[] args) {
		ConcreteComponent c = new ConcreteComponent();
		ConcreteDecoratorA a = new ConcreteDecoratorA();
		ConcreteDecoratorB b = new ConcreteDecoratorB();
		 
		a.setComponent(c);
		b.setComponent(a);
		
		b.operation();
	}
}

        Component是定义一个对象接口,可以给这些对象动态地添加职责。ConcretrComponent是定义了一个具体的对象,也可以给这个对象添加一下职责。Decorator,修饰抽象类,继承了Component,从外类扩展Component类的功能。但对于Component来说,是无需知道Decorator的存在的,至于ConcretrComponent就是具体的装饰对象,起到给Component添加职责的功能。

        装饰者模式为了已有功能动态地添加更多功能的一种方式,当系统需要新功能的时候,是向旧的类中添加新的代码,这些新加的代码通常装饰了原有类的核心职责或主要行为,在主类中加入了新的字段,新的方法,新的逻辑,从而增加了主类的复杂度,而这些新加入的东西仅仅是为了满足一些只在某种特定情况下才会执行的特殊行为的需要,而装饰模式却提供了一个非常好的解决方案,它把每个类要装饰的功能放在单独的类中,并让这个类包装它所要装饰的对象,因此,当要执行特殊行为时,客户代码就可以在运行时根据需要有选择地,按顺序地使用装饰功能包装对象了。

        装饰模式的优点就是把类中的装饰功能从类中搬移去除,这样可以简化原有的类,有效地把类的核心职责和装饰功能区分开了,而且可以去除相关类中的重复的装饰逻辑。

资源下载链接为: https://pan.quark.cn/s/f989b9092fc5 在 Android 应用开发中,开发一款仿 OPPO 手机计算器的应用是极具实践价值的任务,它融合了 UI 设计、事件处理以及数学逻辑等多方面的技术要点。当前的“最新版仿 OPPO 手机计算器--android.rar”压缩包中,提供了该计算器应用的源代码,这为开发者深入学习 Android 编程提供了宝贵的资源。 UI 设计是构建此类计算器应用的基石。OPPO 手机的计算器界面以清晰的布局和良好的用户交互体验著称,其中包括数字键、运算符键以及用于显示结果的区域等关键元素。开发者需借助 Android Studio 中的 XML 布局文件来定义这些界面元素,可选用 LinearLayout、GridLayout 或 ConstraintLayout 等布局管理器,并搭配 Button 控件来实现各个按键功能。同时,还需考虑不同分辨率屏幕和设备尺寸的适配问题,这通常涉及 Density Independent Pixel(dp)单位的应用以及 Android 尺寸资源的合理配置。 事件处理构成了计算器的核心功能。开发者要在每个按钮的点击事件中编写相应的处理代码,通常通过实现 OnClickListener 接口来完成。例如,当用户点击数字键时,相应的值会被添加到显示区域;点击运算符键时,则会保存当前操作数并设定运算类型。而对于等号(=)按钮,需要执行计算操作,这往往需要借助栈数据结构来存储操作数和运算符,并运用算法解析表达式以完成计算。 数学逻辑的实现则是计算器功能的关键体现。在 Android 应用中,开发者可以利用 Java 内置的 Math 类,或者自行设计算法来完成计算任务。基本的加减乘除运算可通过简单的算术操作实现,而像求幂、开方等复杂运算则需调用 Math 类的相关方法。此外
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值