设计模式之工厂方法模式

前言

设计模式这个东西真的很完美,但是再完美的东西也要看场景,就像原子+原子 != 原子一样,用不好可能会起反作用。不上定义,太拗口了,看例子、看例子。

1.什么是工厂方法模式

工厂方法模式是指定义一个创建对象的接口,但具体实例哪个对象,由实现了这个接口的类来决定,工厂方法让让类的实例推迟到子类进行。

翻译成人话,首先你需要一个公共的部分,比如说一辆车,你肯定要有四个轱辘,和一个架子,然后你要有变化的部分,比如说发动机、内饰,车的牌子有N多种,但是不变的肯定是轱辘和架子,这个就是公共的部分,变动的是零件,可能我这辆车有氮气急速装置,另外一辆没刹车,这个地方就需要多个了。

上代码写一写

//首先找到公共部分并抽出来,由其它所有有这个属性的对象去实现
//以追女朋友为例,女朋友的共同属性,首先要是女性
interface GirlFriend{
    void female();
}

//首先要是girl
class Aloof implements GirlFriend{
    Override
    public void female(){
        System.out.println("找到了一名性格高冷的女生");
    }
}

class Hot implements GirlFriend{
    Override
    public void female(){
        System.out.println("找到了一名性格火热的女生");
    }
}
//这样稳定部分已经抽出来了,下面处理不稳定的部分

//定义一个抽象类,因为需要一个必须实现的抽象方法,可以理解每个女孩子都有不同的特点,
//比如说高冷和火热
abstract class Application{
    //子类必须实现的方法,理解为类型
    abstract GirlFriend girlType();
    GirlFriend getObject(){
        GirlFriend girl = girlType();
        return girl;
    }
}

//定义两个子类
class ChaseAloof extends Application{
    @Override
    Product girlType() {
        log.info("this girl is Aloof")
        return new Aloof ();
    }
}

class ChaseHot extends Application{
    @Override
    Product girlType() {
        log.info("this is girl is Hot");
        return new Hot ();
    }
}

//不同类型的女生已经定义好了,下面想追哪个那就自己决定了
   public static void main(String[] args) {
        //比如说想追高冷的
        Application application = new ChaseAloof ();
        //先找到这种类型的女孩
        GirlFriend girl = application.girlType();
        girl.female();

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值