设计模式
是在特定环境下人们解决某类重复出现额问题的一套成功的有效的方案
四人组(gang of four) 将"模式"的概念引入软件工程
“在一定的环境下,用固定套路解决问题”
设计模式的概念
设计模式的基础是: 多态
设计模式的原则是: 高内聚 ,低耦合(各个类之间少参与,保持模块性)
单一职责原则: 类的职责单一,对外只提供一种功能,引起变化的原因也只有一个.
开闭原则: 类的改动是通过增加代码而进行的,而不是修改源码.
迪米特法则: 一个对象应当对其他对象尽可能的少了解,从而降低各个对象之间的耦合,提高系统的可维护性.符合设计模式的基本原则(高内聚,低耦合).
里氏代换原则: 任何抽象类出现的地方都可以用他的实现类代替,实际就是虚拟机制,语言级别实现面向对象功能.
依赖倒转原则: 依赖于抽象接口,不要依赖于具体的实现类,也就是针对接口编程.
简单工厂和工厂方法
简单工厂的优点
1.实现了对象创建和使用的分离
2.不用记住类名,只需记住参数,减少了记忆量
简单工厂的缺点
1.对工厂类负担过重
2.复杂度增加
3.违反了工厂的原则
public abstract class AbsFruit
{
public abstract void showName();
}
class Apple : AbsFruit
{
public override void showName()
{
Console.WriteLine("苹果");
}
}
class Banana : AbsFruit
{
public override void showName()
{
Console.WriteLine("香蕉");
}
}
工厂方法:
是一个产品一个厂
优点是
1.不需要记住具体类名,甚至连具体参数都不用记忆
2.实现了对象创建和使用的分离
3.系统的可拓展性也就变得风场好,无需修改接口和原类
缺点是
1.增加系统中类的个数,复杂度和理解度增加
2.增加了系统的抽象性和理解难度
namespace 简单工厂
{
class Program
{
public abstract class AbsFruit //定义抽象方法抽象水果
{
public abstract void showName();
}
public abstract class AbsFac //定义抽象方法抽象工厂
{
public abstract AbsFruit createFruit();
}
class Apple : AbsFruit //定义Apple继承抽象水果
{
public override void showName()
{
Console.WriteLine("apple");
}
}
class appleFactory : AbsFac //定义appleFac继承自抽象工厂
{
public override AbsFruit createFruit()
{
return new Apple();
}
}
}
}