设计模式
来源:互联网 发布:网络搜索引擎市场份额 编辑:程序博客网 时间:2024/05/21 09:44
设计模式之简单工厂模式
简单工厂模式旨在使对象的创建和使用相分离,客户端不再负责对象的创建,而是把责任丢给一个专门负责创建对象的工厂。
例如,对于一个动物园管理程序,需要管理许多不同的动物,因此可以设计如下。
首先创建一个Animal接口,描述所有动物的共性。
package com.design;public interface Animal {//所有动物都会吃public void eat();}然后不同的动物分别实现这个接口,并添加自己的特性
package com.design;public class Bird implements Animal{//鸟会吃public void eat() {System.out.println("鸟在吃");}//鸟会飞public void fly() {System.out.println("鸟在飞");}}
package com.design;public class Cat implements Animal{//猫会吃public void eat(){System.out.println("猫在吃");}//猫会跳public void jump(){System.out.println("猫在跳");}}
package com.design;public class AnimalFactory {public static Animal createAnimal(String animalName){Animal animal = null;try {animal=(Animal) Class.forName(animalName).newInstance();} catch (ClassNotFoundException e) {System.out.println("找不到");} catch (InstantiationException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IllegalAccessException e) {// TODO Auto-generated catch blocke.printStackTrace();}return animal;}}最后客户端就可以简单的使用不同的动物了
package com.design;public class SimpleClient {public static void main(String[]args){Cat cat=(Cat) AnimalFactory.createAnimal("com.design.Cat");cat.eat();cat.jump();Bird bird=(Bird) AnimalFactory.createAnimal("com.design.Bird");bird.eat();bird.fly();}}
运行结果:
猫在吃
猫在跳
鸟在吃
鸟在飞
设计模式之工厂模式
前面的简单工厂模式虽然在一定程度上使使用对象与创建对象分离,但是由于只有一个工厂,因此假如对象过多并且每个对象的初始化很复杂的话,那么这个工厂将会显的很臃肿不利于维护,因此,工厂模式对于每种对象分配一个工厂,更加细化了责任。
修改上面的例子
Animal接口以及具体实现类不变,创建一个Factory声明创建对象的方法
package com.design;public interface Factory {public Animal createAnimal();}
然后不同的动物工厂实现这个接口
package com.design;public class BirdFactory implements Factory{public Animal createAnimal() {return new Bird();}}
package com.design;public class CatFactory implements Factory{public Animal createAnimal(){return new Cat();}}
最后客户端调用如下
package com.design;public class SimpleClient {public static void main(String[]args){Cat cat=(Cat)new CatFactory().createAnimal();cat.eat();cat.jump();Bird bird=(Bird)new BirdFactory().createAnimal();bird.eat();bird.fly();}}
运行结果同上
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式~~~~~~~~~~
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- CentOS 安装telnet
- 第七学 linux内核——内存寻址——段机制(1)
- 模板编写规范
- BaseServlet扩展了的HttpServlet,包装Request来处理中文乱码
- TemplateDemo
- 设计模式
- 【重要通知】设计师禁用的官方类选择器
- cvFindContours之2
- boot loader
- 图的数组(邻接矩阵)存储
- Ubuntu 安装 QQ (简易安装 适合32位操作系统)
- oracle数据库查看用户锁表及对表解锁的sql语句
- 关于java get set 变量命名
- Visual studio 快捷键