设计模式
设计模式23式
(一)了解设计模式给程序设计带来的好处
(二)创建型模式:熟练掌握(简单工厂,工厂方法,抽象,单利模式,建造者模式,原型模式)
(三)结构性模式:适配器模式,装饰器模式,代理模式,外观模式,桥接模式,组合模式,享元模式,
(四)行为模式:策略模式,模板方法模式,观察者模式,迭代子模式,责任链模式,命令模式,备忘录模式,状态模式,访问者模式中介者模式,解释器模式。
软件设计原则
(1)可复用
软件的某一些类库可以在不同的软件中使用,这样可以大大的提高了开发的效率。
(2)可维护性
只得是需求有变化的给软件增减一些功能,只是需要修改一些想修改的地方,而其他的地方又不受影响,这样就可以达到了减少软件的重新测试时间。
(3)可扩展性
指的是软件可以扩展性,有好的优势是可以通过插件的形式提供对本身的功能进行扩展。
六大原则
(1)单一原则
例如:每一个对象都应该实现相对应的单一职责,如果不是的话,就应该把这个类给拆分了。(理解案例:数据库代码功能,用户代码功能,这两个不相同,所以就是得把他们给拆分实现相对应的职责)
1.单一原则:就是一个类只有一个实例,并且提供一个访问它的全局访问点。
(2)里氏替换原则
抽象不依赖细节,细节依赖于抽象
例如:你想回家,而你回家的方式有很多种,走路回家,骑自行车回家,坐车回家等等很多种,而你的目的,就是回家,而你回家的方式是由自己决定的,而做软件的时候,你想把一个功能给实现,但是也可以使用很多的方法是一样的。
(3)依赖倒转原则
定义:依赖倒置原则包含三个含义
(1)高层模块不应该依赖底层模块,两者都应该依赖其抽象
(2)抽象不应该依赖细节
(3)细节应该依赖抽象
依赖倒置原则在Java中的实现是表现是:
(1)模块间的依赖是通过抽象发生的,实现类之间不发生直接依赖关系,其依赖关系是通过接口或者是抽象类产生的。
(2)接口和抽象不依赖于实现类
(3)实现类依赖接口和抽象类
遵循原则:
(1)每个类都要尽量有一个接口或者是一个抽象类
(2)变量的表面类型尽量是接口或者抽象类
(3)任何类都不应该从具体类派生
(4)尽量不要写基类是一个抽象类,而且这个方法已经实现了,子类尽量不要复写
(5)接口负责的定义是public属性和方法,并且声明与其他对象的依赖关系,抽象类负责公共构造部分的实现,实现类准确的实现业务逻辑
(4)接口隔离原则
每一个接口中不存在子类用不到的,但是有必须要实现的方法(理解:今天自己不想吃饭,但是自己又不得不吃饭),如果不是的话,那就将它的接口拆分,使用多种隔离的接口(理解:如果今天自己不想吃饭,但是你可以选择吃水果,吃牛排,吃鸡肉等等之类)。
每一个接口中不存在子类用不到的,但是有必须要实现的方法(理解:今天自己不想吃饭,但是自己又不得不吃饭),如果不是的话,那就将它的接口拆分,使用多种隔离的接口(理解:如果今天自己不想吃饭,但是你可以选择吃水果,吃牛排,吃鸡肉等等之类)。
(5)迪米特法则
(1)最好的理解就是降低各个模块之间的耦合
(6)开发封闭原则
(1)软件的实体(类,模块,函数.....)可以在它们的基础上进行扩张是开发的,但是对于更改他们原有的代码是封闭的。
小案例:
//操作类
public abstract class Operation
{
public int numberA;
public int numberB
public abstract int GetResult();
}
//减的方法
public class AddOperation:Operation
{
public override int GetResult()
{
return (this.numberA + this.numberB);
}
}
//加的方法
public class SubOperation:Operation
{
public override int GetResult()
{
return (this.numberA - this.numberB);
}
}
//简单工厂
public class SimpleFactory
{
public static Operation CreateOperation(string operation)
{
Operation o = null;
switch (operation)
{
case "+":
o = new AddOperation();
break;
case "-":
o = new SubOperation();
break;
return o;
}
}
static void Main(string[] args)
{
Operation operation1 = c SimpleFactory.CreateOperation("+");
operation1.numberA = 10;
operation1.numberB = 20;
Console.WriteLine("{0}+{1}={2}", operation1.numberA, operation1.numberB, operation1.GetResult());
Operation operation2 = SimpleFactory.CreateOperation("-");
operation2.numberA = 10;
operation2.numberB = 20;
Console.WriteLine("{0}-{1}={2}", operation2.numberA, operation2.numberB, operation2.GetResult());
Console.Read();
}
说明:这个只是其中的一部分内容而已,过后小编还会把一些剩余的内容给补上。