设计模式——简单工厂模式

工厂是一个类,这个类负责生产很多具有一部分相同属性或者方法的不同的类对象,其实就是一个生产类对象的工厂

简单工厂的优点:

  1:简单工厂可以有效地降低客户端和具体对象的耦合,将new具体对象的任务交给了一个简单工厂类

  2:可以有效的进行代码复用,如客户端A和客户端B都需要一个具体对象,客户端A和客户端B可以通过同一个简单工厂来获取具体类型的实例

简单工厂的缺点:

  一定程度上违背了开闭原则,在新增产品时需要修改简单工厂类

1.abstract的特点

(1).用abstract关键字修饰的函数是抽象函数。

(2).类内含有抽象函数的类叫做抽象类,类需要用abstract修饰

(3).抽象类不能被实例化,所以无法对抽象类进行new

(4).继承自抽象类的子类必须覆盖实现父类中的抽象函数 。

(5).抽象类可以有构造函数,当被继承的时候,子类会用super()调用父类的构造函数

abstract不可以和final一同使用:被final修饰后的类不能出现子类,而abstract的类需要子类来重写方法(不然毫无意义)。

abstract不可以和private一同使用: 当用private修饰抽象函数的时候,子类继承会无法重写父类的抽象方法(private不被子类继承)

//设计一个动物类 动物的叫声 
//abstract抽象类——表达概念而无法构造出实体的类,且不能生成对象,通常被继承
public abstract class Animal
{
	public abstract void voice();
}

//子类实现接口 人
public class People:Animal
{
	public override void voice()
	{
		print("说话");
	}
}
//子类实现接口 猴子
public class Monkey:Animal
{
	public override void voice()
	{
		print("叫吱吱");
	}
}
//等一些列动物子类

//动物工厂类
public class AnimalFactory
{
	public static Animal GetAnimalInstance(string anitype)
	{
		Animal ani = null;
		if(anitype=="People")
		{
			ani = new People();
		}
		elseif (anitype=="Monkey")
		{
			ani = new Monkey();
		}
		else
		{
			
		}
		return ani;
	}
}

//调用
MobilePhone animal1 = AnimalFactory.GetAnimalInstance("Monkey");
if(animal1 != null)
 	animal1.voice();
MobilePhone animal2 = AnimalFactory.GetAnimalInstance("People");
if(animal2 != null)
 	animal2.voice();
            

工厂模式可以用在创建怪物类,因为怪物都有攻击播放技能特效声音等,
 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值