创建型设计模式(简单工厂,工厂,抽象工厂与单例模式

简单工厂模式又称为静态工厂模式主要用于类的创建(创建型模式都是)具体的工作方式我们可以通过类图来说明:


举个例子,假如我们买衣服,衣服的定义是布做的,人穿的(呵呵,有点废话),那么我们可以买外套 和裤子。具体的代码实现呢就可以这样来表示(便于观看,部分代码写成中文)

public class 买衣服 {
private 外套 买外套;
private 裤子 买裤子;
商家 衣服店 = new 商家();//调用简单工厂类
public void shopping(){
this.买外套 = 衣服店.卖外套();
this.买裤子 = 衣服店.卖裤子();
}
}
//实体类接口
interface 衣服{
public void 布做的();
public void 人穿的();
}


//实体类 外套
class 外套 implements 衣服{
public void 布做的() {
}
public void 人穿的() {
}
}
//实体类 裤子
class 裤子 implements 衣服{
public void 布做的() {
}
public void 人穿的() {
}
}
// 简单工厂类(相当于商家)
class 商家{
public 外套 卖外套(){
return new 外套();
}
public 裤子 卖裤子(){
return new 裤子();
}
}

由上可见我们在需要一个对象实体时,我们不用new一个出来而是通过调用简单工厂来为我们生成一个实例。简单工厂虽然实现类的创建,但在高内聚方面做得不好。同时只有一个工厂类对后期修改维护也是不利的。对此我们又提出了工厂方法模式。它是对简单工厂的进一步改进。同样看类图


通过与简单工厂对比我们可以发现,工厂方法给每个工厂新增一个接口。这就为新增新产品提供便利(开闭原则),同时与简单工厂不同的是工厂方法针对每一种产品提供一个工厂类。如果仍以上面买衣服为例子的话。用工厂模式则相当于在商家上一层新增一个总部,它规定了商家卖什么东西(也就是针对哪些产品提供工厂)。商家需要实现总部(工厂接口)接口。

抽象工厂模式

在学习抽象工厂具体实例之前,应该明白两个重要的概念:产品族和产品等级。

所谓产品族,是指位于不同产品等级结构中,功能相关联的产品组成的家族。比如AMD的主板、芯片组、CPU组成一个家族,Intel的主板、芯片组、CPU组成一个家族。而这两个家族都来自于三个产品等级:主板、芯片组、CPU。

而抽象工厂模式则针对产品族概念的。我们还是看类图:


通过类图我们可以看出抽象工厂的工作方式。通过工厂方法我们可以生产一个产品。而抽象工厂可以生产一个等级产品。他们是一种产品(都是主板)但属于不同族。

单例模式是一种比较重要的设计模式。他有懒汉,饿汉之分。内容较多,这里不详细解释了。具体了解,可以看上一篇博文中推荐个大家的博文。谢谢!!

小弟也是初学者,欢迎大家给出批评建议!!!!!!!!




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值