什么是设计模式?
1、设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。
2、设计模式不是一种方法和技术,而是一种思想
3、设计模式和具体的语言无关,学习设计模式就是要建立面向对象的思想,尽可能的面向接口编程,低耦合,高内聚,使设计的程序可复用
4、学习设计模式能够促进对面向对象思想的理解,反之亦然。它们相辅相成
设计模式的几个要素是什么?
1、名字: 必须有一个简单,有意义的名字
2、问题 :描述在何时使用模式
3、解决方案: 描述设计的组成部分以及如何解决问题
4、效果: 描述模式的效果以及优缺点
设计模式的分类
1、创建型模式 :对象的创建。
简单工厂模式,工厂方法模式,抽象工厂模式,建造者模式,原型模式,单例模式。(6个)
2、结构型模式 :对象的组成(结构)
外观模式、适配器模式、代理模式、装饰模式、桥接模式、组合模式、享元模式。(7个)
3、行为型模式 :对象的行为
模版方法模式、观察者模式、状态模式、职责链模式、命令模式、访问者模式、策略模式、备忘录模式、迭代器模式、解释器模式。(10个)
简单工厂模式
简单工厂模式:又叫静态工厂方法模式,它定义一个具体的工厂类负责创建一些对实现了同一接口类的实例
优点:客户端不需要在负责对象的创建,从而明确了各个类的职责
缺点:这个静态工厂类负责所有对象的创建,如果有新的对象增加,或者某些对象的创建方式不同,就需要不断的修改工厂类,不利于后期的维护
举个例子:
Animal抽象类,作为父类
public abstract class Animal {
public abstract void eat();
}
Cat类继承Animal
public class Cat extends Animal {
@Override
public void eat() {
System.out.println("猫吃鱼");
}
}
Dog类继承Animal
public class Dog extends Animal {
@Override
public void eat() {
System.out.println("狗吃肉");
}
}
AnimalFactory工厂类:专门用来创建对象的实例
public class AnimalFacrtory {
//私有的构造方法,说明不能通过new来创建这个类的实例,因此要调用这个类中的方法,这些方法必须是静态的才能被调用。
private AnimalFacrtory(){
}
public static Animal createAnimal(String type){
if("dog".equals(type)){
return new Dog();
}else if("cat".equals(type)){
return new Cat();
}else{
return null;
}
}
}
测试类:
public class AnimalDemo {
public static void main(String[] args) {
//创建一个Dog类的实例对象
Animal a = (Dog) AnimalFacrtory.createAnimal("dog");
a.eat();