工厂方法模式--简单的看法

    xiaoxiao2025-05-04  11

    工厂方法模式定义一个用于创建对象的接口,让子类决定实例化哪一个类,Factory Method使一个类的实例化延迟到了子类。 (完全符合开闭原则,解决了简单工厂方法模式添加新的类需要去修改原有的类)

    结构与角色 Factory:抽象工厂。工厂方法模式的核心,声明工厂方法,返回一个产品。在任何情况下创建对象的工厂类必须继承当前的接口。 ConcreteFactory:具体工厂。实现抽象工厂接口的具体java类,实现了工厂方法,含有与应用密切相关的逻辑,有客户调用返回一个产品实例。 Product:抽象产品,定义产品接口。工厂方法模式所创建的对象的父类型,产品抽象共同拥有的接口。 ConcreteProduct:具体产品。实现抽象产品角色接口的类,工厂方法模式所创建的每一个对象都是某个具体产品角色的实例。

    情景 家兴是一个非常喜欢打篮球游戏的屌丝,同时是一个IT男,最近公司让它开发一些投篮的一些类,但是要求是不能违背开闭原则,以后更改其它代码,因此家兴想到工厂方法模式; 打篮球触发行为动作,其实都是那一瞬间的肌肉记忆反应的,但是在游戏中,它是主要通过人为控制来实现,这样我们通过Mind接口来替代Factory,同时ShotTechnology接口代替Product。同时家兴如果再需要填加新的投篮技术,只需要通过继承MInd和ShotTechnology这两个接口来实现,就可以实现这一技术,只需要在客户端进行调用。如添加抛投等等

    工厂方法模式xml图

    //接口类 public interface Mind { public ShotTechnology mind(); } public interface ShotTechnology { } //继承Mind接口 public class DryPickMind implements Mind { public ShotTechnology mind(){ return new DryPick(); } } public class ScramMind implements Mind { public ShotTechnology mind(){ return new Scram(); } } //继承ShotTechnology接口 public class DryPick implements ShotTechnology{ public DryPick(){ System.out.println("我家兴要使用干拔,我看你们谁能拦我。"); } } public class Scram implements ShotTechnology{ public Scram(){ System.out.println("我家兴要使用急停,你还没反应,呵呵。"); } }
    转载请注明原文地址: https://ju.6miu.com/read-1298743.html
    最新回复(0)