首页 > 代码库 > 面向对象思想设计原则

面向对象思想设计原则

设计模式:经验的总结,本质是一个思想,和具体的语言无关

分为创建型设计模式、结构型设计模式、行为型设计模式,共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();
}
}

 

面向对象思想设计原则