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修饰,所以可以直接通过类名进行调用。综上所述:相对于前两种方式来说,第三种方式更易使用。所以在开发过程中,一般使用第三种方式,即静态方法工厂。
阅读全文
0 0
- java开发的23种设计模式(一)
- JAVA的23种设计模式---代理模式(一)
- JAVA的23种设计模式---备忘录模式(一)
- Java开发中的23种设计模式之行为型模式(一)
- Java开发中的23种设计模式详解一
- Java开发中的23种设计模式详解(一)
- java开发的23种设计模式
- Java开发的23种设计模式
- 23种设计模式(java)一
- JAVA的23种设计模式一-------工厂方法模式
- java开发的23种设计模式(二)
- java开发的23种设计模式(三)
- JAVA开发的23种设计模式之 --- 外观模式
- JAVA开发的23种设计模式之 --- 策略模式
- JAVA开发的23种设计模式之 --- 模板模式
- JAVA开发的23种设计模式之 --- 观察者模式
- JAVA开发的23种设计模式之 --- 命令模式
- JAVA开发的23种设计模式之 --- 备忘录模式
- (原创)安卓Drawable文件夹适配规律
- redux-saga HellWorld入门 异步计数器(react-redux)
- 如何用消息系统避免分布式事务?
- Android启动篇 — init原理(二)
- 登录chrome账号
- java开发的23种设计模式(一)
- 我们是怎样在项目内落地自动化测试体系的
- Unity官方示例UnityWaterSurface分析
- ajax三种传值方式
- Android studio分享代码到Github
- 100道Linux面试题
- 使用idea启动项目时,报错:Error:java: Compilation failed: internal java compiler error
- 自主学习(active learning)
- vue 开发中element-ui库的switch开关绑定number类型数据不成功问题