java开发的23种设计模式(一)

来源:互联网 发布:王作强鱼线淘宝店 编辑:程序博客网 时间:2024/06/14 11:07

这篇文章算是小明的第一篇技术博客了,写技术之前先立个flag吧——每日一更,风雨无阻。

小明写技术博客的原因有二:一则是为了给自己建立一个知识库,方便日后查阅;二则是在学习的路上依靠着诸位大牛的技术博客解决了不少问题,故而心怀感    激,也想为后来的学习者提供些许帮助。

由于最近感觉自己代码过于繁琐,为求精简,所以开始着手研究java的23种设计模式,于是也就从这里开始小明的技术博客之路吧~~~~


java的23中设计模式之——工厂方法模式(Factory Method)

1、普通工厂模式

使用一个工厂类,对于实现同一接口的类进行实例化。例:

//首先  创建接口Pet  包含public方法eat();public interface Pet {public void eat();}
//之后,创建Dog类实现Pet接口。public class Dog implements Pet{@Overridepublic void eat() {System.out.println("狗狗吃骨头");}}

//再创建Cat类也实现Pet接口。
public class Cat implements Pet{

    @Override
    public void eat() {
        System.out.println("喵喵吃小鱼");
    }
    
}

//最后创建工厂类,根据输入的字符串返回相应类型的实例化对象。
public class PetFactory {
    public Pet produce(String type)
    {
        if(type.equals("Dog"))
        {
            return new Dog();
        }
        else if(type.equals("Cat"))
        {
            return new Cat();
        }
        else
        {
            System.out.println("该类型不存在");
            return null;
        }
    }
}

//接下来我们通过测试类来进行测试
public class Test {
    public static void main(String[] args) {
        
        //通过工厂类创建Pet实例
        PetFactory petFactory = new PetFactory();
        Pet pet = petFactory.produce("Dog");
        //调用对象的eat()方法
        pet.eat();
    }

}

//控制台输出结果:狗狗吃骨头

2、多方法工厂模式

该模式对第一种工厂模式进行了优化,工厂类内部针对不同类提供不同方法进行实例化。例:

//实体类如上,这里只写出工厂类以及测试类public class PetFactory_2 {//方法一  返回一个Dog对象public Pet produceDog(){return new Dog();}//方法二 返回一个Cat对象public Pet produceCat(){return new Cat();}}//依然通过测试类来进行测试public class Test {    public static void main(String[] args) {                //通过工厂类创建Pet实例        PetFactory_2 petFactory = new PetFactory_2();        Pet pet = petFactory.produceDog();        //调用对象的eat()方法        pet.eat();    }}//控制台结果不变: 狗狗吃骨头
使用这种方法的好处:使用工厂类创建对象时,无需传入方法,避免了参数错误;使用IDE进行开发时,可以通过代码提示功能看到方法名称,更加方便使用。

3、静态方法工厂模式

该模式对上一种工厂模式进行优化,把工厂类内部方法设置为静态方法。例:

//相对于上一种模式来说,只需要将内部方法设置为静态方法。public class PetFactory_3 {//方法一 返回一个Dog对象public static Pet produceDog(){return new Dog();}//方法二 返回一个Cat对象public static Pet produceCat(){return new Cat();}}//依然通过测试类进行测试public class Test {    public static void main(String[] args) {                //通过工厂类创建Pet实例        Pet pet = PetFactory_3.produceDog();        //调用对象的eat()方法        pet.eat();    }}
//控制台结果依然不变: 狗狗吃骨头

很明显可以看出第三种方式的优势,不需要创建工厂实例,由于工厂内部方法被static修饰,所以可以直接通过类名进行调用。

综上所述:相对于前两种方式来说,第三种方式更易使用。所以在开发过程中,一般使用第三种方式,即静态方法工厂。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 买多了奶粉怎么办 床铺木板异响怎么办 木板床一动就响怎么办 打工要不到工资怎么办 导师回复跟敷衍怎么办 在演讲时紧张怎么办 老房子怎么办不动产证 脚角质层厚粗糙怎么办 皮革包染色了怎么办 皮革包被染色了怎么办 面膜泥干了怎么办 淘宝店铺生意不好怎么办 淘宝商品换主图被下架了怎么办 壁纸店没生意怎么办 支付宝不能借钱怎么办 淘宝号想注销怎么办 被陌生号码骚扰怎么办 买家辱骂卖家怎么办 淘宝禁止创建店铺怎么办 闲鱼上买东西被骗了怎么办 恶意买家付款了怎么办 换手机号了淘宝怎么办 旺旺发不了图片怎么办 拼多多买家投诉怎么办 拼多多恶意用户怎么办 淘宝运单号填错了怎么办 淘宝退货卖家不处理怎么办 淘宝长时间不发货怎么办 实体店卖假货怎么办 淘宝店暂停服务怎么办 淘宝直播开始没人怎么办 店铺违规虚假交易怎么办 电视无频道信息怎么办 hdp直播频道丢失怎么办 小红书订单删了怎么办 退款售后删除我怎么办 毛衣袖子肥了怎么办 店面生意不好要怎么办 中国的农民以后怎么办 做到不好的梦怎么办 美瞳线眼睛肿了怎么办