简单工厂设计模式

什么是简单工厂设计模式

简单设计工厂是由封装,多态和继承来组成,由一个定义的类来负责创建其他类的实例,被创建的其他类都有一个共同的父类,简单工模式也被称为静态工厂方法(Static Factory Method)模式,属于类的创建型模式,不过他不在我们的23种GOF设计模式之一,可以很好的实现代码的解耦。

工厂模式的分析和实现例子

上面阐述了什么是工厂模式,下面我们也不在啰嗦直接上代码(计数机例子)并通过简单的说明来让各位明白简单工厂模式,简单工厂模式一共分为三个角色:工厂角色,抽象产品角色,具体产品角色
1)工厂角色(Factory):是简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。可被外界直接调用来创建产品对象。
2)抽象产品角色:是简单工厂模式所创建的所有产品对象的父类,它负责描述所有实例所共有的公共接口
3)具体产品角色:是简单工厂模式的创建目标,所有创建的对象都是充当这个角色的某个具体类的实例

class Operation {
	double GetResult(){
		return 0;
	}
}

class OperationAdd extends Operation {
	@Override
	public double GetResult() {
		System.out.println("加法~");
		return 0;
	}
}

class OperationDivision extends Operation{
	@Override
	public double GetResult() {
		System.out.println("除法~");
		return 0;
	}
}

class OperationSubtraction extends Operation{
	@Override
	public double GetResult() {
		System.out.println("减法~");
		return 0;
	}
}

创建上面的父类和运算实现类后,我们我们实现工厂,定义一个静态的方法来生成实例

class Factory {
	
	/**
	 * 根据传入的运算方式创建实例
	 * @return
	 */
	public static Operation createOperation(String type){
		Operation operation=null;
		switch (type) {
			case "+":
				operation=new OperationAdd();
				break;
			case "/":
				  operation=new OperationDivision();
				break;
			case "-":
				  operation=new OperationSubtraction();
				break;
			default:
				break;
		}
		return operation;
	}
}

到这里我们的上面说的三个角色已经全部定义完成,下面我们就可以通过我们的静态方法来生成我们想要的实例

class MainFunction{

	public static void main(String[] args) {
		Operation operation=Factory.createOperation("+");
		operation.GetResult();
	}
}

运行结果:
简单工厂,设计模式

优势劣势分析:
  在简单工厂模式中,工厂类是整个模式的关键,其包含必要的判断逻辑,能够根据外界给定的信息,决定究竟创建哪个类的实例,外界可以不用去关注对象的创建,仅需要负责“消费”对象就可以了,明确区分了责任,有利于结构的优化。
  不过,简单工厂模式的缺点也提现在其工厂类上,该类集中了所有实例的创建逻辑,违反了高内聚的责任分配原则,当系统的具体产品类不断增多时,工厂类中条件判断过多,不利于扩展及维护,简单工厂模式的这些缺点,利用工厂方法模式可以得到一定的克服。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值