设计模式:经验的总结,本质是一个思想,和具体的语言无关
分为创建型设计模式、结构型设计模式、行为型设计模式,共23个模式
创建型设计模式: 创建对象 6个 如简单工厂模式、工厂模式、单例模式
结构型设计模式: 对象的组成 7个
行为型设计模式:对象的功能 10个
简单工厂模式:定义一个具体的工厂类负责创建一些类的实例
优点:客户端不再需要负责对象的创建,从而明确了各个类的职责
弊端:每当有新的对象增加,就需要不断的修改工厂类,不利于后期的维护
代码
package cn.idcast;
public abstract class Animal {
public abstract void eat();
}
package cn.idcast;
public class Cat extends Animal {
@Override
// TODO Auto-generated method stub
public void eat() {
System.out.println("猫吃鱼");
}
}
package cn.idcast;
public class Dog extends Animal {
// TODO Auto-generated method stub
public void eat() {
System.out.println("狗吃肉");
}
}
package cn.idcast;
//简单工厂模式
public class AnimalDemo {
public static void main(String[] args) {
Animal a = AnimalFactory.createAinmal("dog");
System.out.println("狗吃肉");
a = AnimalFactory.createAinmal("cat");
System.out.println("猫吃鱼");
a=AnimalFactory.createAinmal("hahah");
System.out.println("暂时没有这种东西");
}
}
package cn.idcast;
public class AnimalFactory {
private AnimalFactory() {}
public static Animal createAinmal(String type) {
if("dog".equals(type)) {
return new Dog();
}else if("cat".equals(type)) {
return new Cat();
}else {
return null;
}
}
}
工厂模式:抽象工厂类负责创建对象的接口,具体对象的创建工作和由继承抽象工厂的具体类实现 (大厂下面有小厂)
优点:客户端不再需要负责对象的创建,明确了各个类的职责,后期维护容易,增强了系统的扩展性
弊端:需要额外的编写代码,增加了工作量
代码
package cn.idcast2;
public abstract class Animal {
public abstract void eat();
}
package cn.idcast2;
public interface AnimalFactory {
public abstract Animal createAnimal();
}
package cn.idcast2;
public class Dog extends Animal {
// TODO Auto-generated method stub
public void eat() {
System.out.println("狗吃肉");
}
}
package cn.idcast2;
public class DogFactory implements AnimalFactory {
// TODO Auto-generated method stub
@Override
public Animal createAnimal() {
return new Dog();
}
}
package cn.idcast2;
//工厂模式
public class AnimalDemo {
public static void main(String[] args) {
AnimalFactory af = new DogFactory();
Animal a =af.createAnimal();
a.eat();
}
}