其他分享
首页 > 其他分享> > 8.工厂方法

8.工厂方法

作者:互联网

package factoryMethodModel;

/**
 * 工厂方法模式
 *
 * @author LiMing E-mail:1151143484@qq.com
 * @date 2017年6月14日 上午8:19:28
 *
 *
 *       简单工厂模式前边已经提到过了:缺点是违背了开放封闭原则(对扩展开放 但是对修改不是封闭的 每次添加新的功能需要修改工厂类)
 *       工厂方法模式是简单工厂模式的升级 不进具有简单工厂模式的优点 还复合开放封闭原则 因为他是把创建每一类对象都封装成一个工厂
 *       这样如果需要添加新的类别 只需要添加新的子类工厂方法就行了 是不需要修改父类工厂方法的(修改封闭) 具体实现看下边
 *       
 *       工厂方法唯一的不足就是把逻辑判断放到客户端  后期可以通过反射 对就是反射来简化客户端的操作
 *
 */
public class FactoryMethodModel {
	public static void main(String[] args) {
		// 使用加法
		Oprator add = AddFactory.createOprator();
		add.method();
		Oprator reduce = ReduceFactory.createOprator();
		reduce.method();

		/*
		 * 就在这个时候 想加一个乘法方法 只需要加一个乘法执行方法class Multiplication 和 乘法构造工厂
		 * 不需要修改任何已存在的类 添加完之后 就可以很方便的用了
		 */
		Oprator mltiplication = MultiplicationFactory.createOprator();
		mltiplication.method();
		
		

	}
}

/**
 * 抽象工厂类
 */
class Factory {
	public static Oprator createOprator() {
		return new Oprator();
	}
}

/**
 * 加法类工厂
 */
class AddFactory extends Factory {

	public static Oprator createOprator() {
		return new Add();
	}

}

/**
 * 减法类工厂
 */
class ReduceFactory extends Factory {

	public static Oprator createOprator() {
		return new Reduce();
	}

}

/**
 * 操作父类
 */
class Oprator {
	public void method() {
		System.out.println("父类操作方法");
	}
}

/*
 * 加法类
 */
class Add extends Oprator {
	public void method() {
		System.out.println("执行加法");
	}
}

/*
 * 减法类
 */
class Reduce extends Oprator {
	public void method() {
		System.out.println("执行减法");
	}
}

/*
 * 添加乘法
 */
// 操作类
class Multiplication extends Oprator {
	public void method() {
		System.out.println("执行乘法");
	}
}

// 工厂类
class MultiplicationFactory extends Factory {

	public static Oprator createOprator() {
		return new Multiplication();
	}

}


标签:Oprator,public,method,createOprator,工厂,方法,class
来源: https://blog.51cto.com/u_12198094/2700001