9.3 模版设计模式

Posted 盘思动

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了9.3 模版设计模式相关的知识,希望对你有一定的参考价值。

  • 抽象类的设计应该是比类更高一层的设计。
  • 抽象类最大好处:1.对子类方法对统一管理;2.可以自身提供有一些普通方法,并且这些普通方法可以调用抽象方法(这些抽象方法必须在有子类提供实现的时候才会生效)
abstract class Action 										// 定义公共行为类
	public static final int EAT = 1;						// “吃饭”操作命令
	public static final int SLEEP = 5;						// “睡觉”操作命令
	public static final int WORK = 10;						// “工作”操作命令
	public void command(int code) 							// 执行命令
		switch (code) 										// 判断命令类型
			case EAT: 
				this.eat();									// 执行命令方法
				break;
			
			case SLEEP: 
				this.sleep();								// 执行命令方法
				break;
			
			case WORK: 
				this.work();									// 执行命令方法
				break;
			
			case EAT + SLEEP + WORK: 						// 组合命令
				this.eat();									// 执行命令方法
				this.sleep();								// 执行命令方法
				this.work();									// 执行命令方法
				break;
			
		
	
	public abstract void eat();								// 【抽象方法】吃饭行为
	public abstract void sleep();								// 【抽象方法】睡觉行为
	public abstract void work();								// 【抽象方法】工作行为


class Robot extends Action 									// 定义机器人行为类
	@Override
	public void eat() 										// 方法覆写
		System.out.println("机器人需要接通电源充电。");
	
	@Override
	public void sleep() 									// 机器不需要休息,方法体为空
	@Override
	public void work() 										// 方法覆写
		System.out.println("机器人按照固定的套路进行工作。");
	


class Person extends Action 									// 人类行为
	@Override
	public void eat() 										// 方法覆写
		System.out.println("饿的时候安静的坐下吃饭。");
	
	@Override
	public void sleep() 										// 方法覆写
		System.out.println("安静的躺下,慢慢的睡着,而后做着美梦。");
	
	@Override
	public void work() 										// 方法覆写
		System.out.println("人类是高级脑类动物,在工作中不断学习与成长。");
	


class Pig extends Action 									// 猪类行为
	@Override
	public void eat() 										// 方法覆写
		System.out.println("吃食槽中饲料。");
	
	@Override
	public void sleep() 										// 方法覆写
		System.out.println("倒地就睡。");
	
	@Override
	public void work() 										// 猪不需要工作,方法体为空


public class HelloWorld 
	public static void main(String args[]) 
		Action robotAction = new Robot();						// 机器人行为
		Action personAction = new Person();					// 人类行为
		Action pigAction = new Pig();							// 猪类行为

		System.out.println("------------ 机器人行为 -------------");
		robotAction.command(Action.SLEEP);					// 执行命令---ACTION.SLEEP类中常量访问方法!!!!
		robotAction.command(Action.WORK);						// 【无效操作】执行命令

		System.out.println("------------ 人类的行为 -------------");
		personAction.command(Action.SLEEP + Action.EAT + Action.WORK);	// 执行命令

		System.out.println("------------ 猪类的行为 -------------");
		pigAction.work();									// 执行命令
		pigAction.eat();										// 执行命令
	

  • 这种设计模式,抽象类是个技术活!!

iOS中都有啥设计模式?各个设计模式的作用

参考技术A 大致有23种

都是表示类与类之间的构架关系 也就是表示对象的逻辑关系

设计模式根据使用类型可以分为三种:

1、 创建模式:工厂模式、单子模式、建造者模式、原型模式、工厂方法模式。

2、 结构模式:外观模式、代理模式、适配器模式、组合模式、装饰模式、桥模式、

共享模式。

3、 行为模式:模板模式、纪念品模式、观察者模式、责任链模式、命令模式、声明模式、

策略模式、中介模式、解释器模式、访问模式

说白了模式就是前人经过大量的实践,总结出来的优化的对象关系 你也可以自己总结出来

3.iOS 10 隐私权限设置

iOS 10 开始对隐私权限更加严格,如果你不设置就会直接崩溃,现在很多遇到崩溃问题了,一般解决办法都是在info.plist文件添加对应的Key-Value就可以了。

iOS 10 UIStatusBar方法过期:

在我们开发中有可能用到UIStatusBar一些属性,在iOS 10 中这些方法已经过期了,如果你的项目中有用的话就得需要适配。上面的图片也能发现,如果在iOS 10中你需要使用preferredStatusBar比如这样:

//iOS 10 - (UIStatusBarStyle)preferredStatusBarStyle    return UIStatusBarStyleDefault;

我们都是用RGB来设置颜色,反正用起来也不是特别多样化,这次新增的方法应该就是一个弥补吧。所以在iOS 10 苹果官方建议我们使用sRGB,因为它性能更好,色彩更丰富。如果你自己为UIColor写了一套分类的话也可尝试替换为sRGB,UIColor类中新增了两个Api如下:

+ (UIColor *)colorWithDisplayP3Red:(CGFloat)displayP3Red green:(CGFloat)green blue:(CGFloat)blue alpha:(CGFloat)alpha NS_AVAILABLE_IOS(10_0); - (UIColor *)initWithDisplayP3Red:(CGFloat)displayP3Red green:(CGFloat)green blue:(CGFloat)blue alpha:(CGFloat)alpha NS_AVAILABLE_IOS(10_0);

以上是关于9.3 模版设计模式的主要内容,如果未能解决你的问题,请参考以下文章

挑战程序设计竞赛(算法和数据结构)——9.3二叉搜索树搜索的JAVA实现

设计模式之—模版方法模式

设计模式之模版方法模式

设计模式- 模版方法模式

模版模式

7设计模式模版模式