设计模式学习(简单工厂、策略模式、单一职责、开闭原则)
来源:互联网 发布:js设计模式与开发实践 编辑:程序博客网 时间:2024/06/12 20:23
最近看了一本大话设计模式,这本书用生动的故事和对话来给读者讲解设计模式及设计原则的相关知识,对于大家学习面向对象有很大帮助。
学习设计模式及原则好处可以使代码设计更具有易重用性、易扩展性、易维护性、灵活性。
最先了解了《简单工厂模式》。
简单工厂以工厂类的方式创建所需功能类对象,在客户端类调用工厂类的创建对象方法即可实现需求。
增加一个新功能需求,只需编写新功能类代码和在工厂类中添加新功能分支。而不是像我们初学者最开始写代码的所有功能只在客户端中完成,完全没有领会到面向对象的精髓。封装、继承、多态。
比如:
某一类功能将其抽象出一个父类,新增一个功能只需写一个子类继承它。子类中实现父类共有的方法体现多态。再编写一个工厂类,初学者可利用switch语句对应每种功能一个case语句创建相关功能类的对象,调用重写或重载的方法实现功能。
精髓代码:
public class Father{ public virtual void GetResult();}public class Son1:Father{ public override void GetResult() { Console.WriteLine("1"); }}public class Son2:Father{ public override void GetResult() { Console.WriteLine("2"); }}public class SimpleFactory{ public static void CreateSon(int sonNum) { Father f; switch(sonNum){ case 1:f=new Son1();break; case 2:f=new Son2();break; } }}static void Main(){ Father fa=SimpleFactory.CreateSon(1); fa.GetResult(); Console.Read();}
第二是《策略模式》
策略Strategy模式封装了变化,将多种策略抽象。客户端经常性改动策略对源代码无较大影响,将策略对象封装到一个Context类中,客户端只需识别该类,而不用像简单工厂模式还需了解工厂类。
abstract class Father{ public abstract void GetResult();}public class Son1:Father{ public override void GetResult() { Console.WriteLine("1"); }}public class Son2:Father{ public override void GetResult() { Console.WriteLine("2"); }}public class SonContext{Father fa;public SonContext(int sonNum){switch(sonNum){case 1:fa=new Son1();break;
case 2:fa=new Son2();break;}}
public void Get()
{
fa.GetResult();
}
}
static void Main()
{
SonContext sc=new SonContext(1);
sc.Get();
Console.Read();
}将对象进一步封装。策略模式是一种定义一系列算法的方法。从概念看,所有算法完成的都是相同的工作,只是实现不同,可以用相同的方式调用所有算法,减少各种算法类与使用算法类之间的耦合。
策略模式是用来封装算法的,在实践中,可以用它封装几乎任何类型的规则,只要在分析过程中需要不同时间应用不同的业务规则,即可考虑策略模式。基本策略模式,选择所用具体实现职责由客户端对象承担,并转给策略模式的Context对象。
单一职责原则
每个类只针对一种变化,即对应一个职责。一个类承担职责过多,代码变得脆弱,耦合度增大。将职责分离为代码设计的重点,但不可过度抽象。
开放封闭原则
对修改关闭、对扩展开放。使程序在需求变动时,只需扩展代码即可,而不用更改全部代码。应预测可能的变化,构造抽象隔离变化。 时机:等待变化发生时立即采取行动!
- 设计模式学习(简单工厂、策略模式、单一职责、开闭原则)
- 设计模式--工厂模式.策略模式.单一职责原则.开放封闭原则.依赖倒转原则
- 大话设计模式之四:1~5章(简单工厂模式 、策略模式、单一职责原则、开放封闭原则 、依赖倒转原则)
- 【设计模式】六大原则之一(单一职责与开闭原则)
- 设计模式之单一职责原则学习
- 设计模式学习之单一职责原则
- 码农小汪-设计模式之-简单工厂模式 单一职责原则 重用代码
- 设计模式(一):单一职责原则
- 设计模式(一)单一职责原则
- 设计模式--单一职责原则(SRP)
- 设计模式-单一职责原则
- 设计模式-单一职责原则
- 设计模式---->单一职责原则
- 设计模式---单一职责原则
- 设计模式:单一职责原则
- 设计模式 单一职责原则
- 设计模式-单一职责原则
- 设计模式:单一职责原则
- python爬虫——模拟登陆教务系统
- java中String类常量池详解
- Leetcode-58. Length of Last Word
- Linux 操作指令
- Codeforces Round #368 (Div. 2) D 离线+查询树
- 设计模式学习(简单工厂、策略模式、单一职责、开闭原则)
- 删除排序数组中的重复元素(三种方法的比较)
- (GeekBand)C++面向对象高级编程(上)第一周测试
- php绝对路径与相对路径之间关系的的深入研究
- 安卓基础笔记
- Android中用switch区分点击是哪个按钮的写法
- 1009-FatMouse' Trade
- 第六周--建立顺序队列环形算法库
- Java