java基础学习之设计模式 十七
来源:互联网 发布:和平网络电视频道地址 编辑:程序博客网 时间:2024/04/30 18:59
设计模式:
通过很多东西抽取出来的一个模型
设计模式分类:
创建型:创建对象,工厂模式,单例模式
结构型:对象间的关系,装饰模式
AnimalFactory
AnimalTest
工厂方法模式
AnimalTest
结果:
其它模式就不多做笔记。。。重在理解。。。
通过很多东西抽取出来的一个模型
设计模式分类:
创建型:创建对象,工厂模式,单例模式
结构型:对象间的关系,装饰模式
行为型:对象能够做什么,魔板模式
简单的工厂模式:
package fanctory;public abstract class Animal {public abstract void eat();}
package fanctory;public class Cat extends Animal {@Overridepublic void eat() {System.out.println("猫吃鱼。。。。");}}
package fanctory;public class Dog extends Animal{@Overridepublic void eat() {System.out.println("狗吃骨头");}}
AnimalFactory
package fanctory;public class AnimalFactory {private AnimalFactory() {// TODO Auto-generated constructor stub}public static Dog getDog(){return new Dog();}public static Cat getCat(){return new Cat();}public static Animal creatAnimal(String type){if("dog".equals(type)){return new Dog();}else if("cat".equals(type)){return new Cat();}else{return null;}}}
AnimalTest
package fanctory;/** * * @author Angus *工厂模式 */public class AnimalTest {public static void main(String[] args) {//Dog d = new Dog();//d.eat();//可以考虑别人来创建对象,既工厂创建。。。Dog d = AnimalFactory.getDog();d.eat();Cat c = AnimalFactory.getCat();c.eat();//这样基本的工厂模式完成。。//但是发现如果有新的动物需要添加,我们就要新建一个类,修改工厂类,添加功能Animal a = AnimalFactory.creatAnimal("dog");a.eat();}}
工厂方法模式
package factory2;public abstract class AnimalFactory {public abstract Animal creatAnimal();}
package factory2;public class DogFactory extends AnimalFactory{@Overridepublic Animal creatAnimal() {return new Dog();}}
package factory2;public class CatFacttory extends AnimalFactory{@Overridepublic Animal creatAnimal() {// TODO Auto-generated method stubreturn new Cat();}}
AnimalTest
package factory2;/** * * @author Angus *工厂方法模式 * 这样没添加一个动物 只需要增加一个动物类和一个动物工厂类 不会修改代码。。 *java思想:扩展不修改。。 */public class AnimalTest {public static void main(String[] args) {//狗AnimalFactory af = new DogFactory();Animal a = af.creatAnimal();a.eat();//猫af = new CatFacttory();a = af.creatAnimal();a.eat();}}
单例模式
饿汉式:
package single;/** * 单例模式 * @author Angus *在内存中只存在一个对象。。。 *1:外界不能随意创建对象,私有构造方法 *2;类本身创建一个对象 *3:通过公共的方式给别人使用 */public class SingleDemo {public static void main(String[] args) {Student s1 = Student.getStudent();Student s2 = Student.getStudent();System.out.println(s1==s2); //trues1.show();s2.show();}}/* * 饿汉式 */class Student{//私有构造方法 这样就无法new对象private Student(){}//私有静态防止外部使用private static Student s = new Student();//公共方法使用public static Student getStudent(){return s;}public void show(){System.out.println("show");}}
结果:
懒汉式:
package single;/** * 单例模式 * @author Angus *在内存中只存在一个对象。。。 *1:外界不能随意创建对象,私有构造方法 *2;类本身创建一个对象 *3:通过公共的方式给别人使用 */public class SingleDemo {public static void main(String[] args) {Student s1 = Student.getStudent();Student s2 = Student.getStudent();System.out.println(s1==s2); //trues1.show();s2.show();}}/* * 懒汉式 * 延迟加载, * 但是多线程会有安全问题,所以加锁 */class Student{//私有构造方法 这样就无法new对象private Student(){}//私有静态防止外部使用private static Student s = null;//公共方法使用public synchronized static Student getStudent(){if(s ==null){s = new Student();}return s;}public void show(){System.out.println("show");}}
其它模式就不多做笔记。。。重在理解。。。
至此java基础复习完毕。。。。
未来三个月到四个月内复习完j2EE所有内容。。
1 0
- java基础学习之设计模式 十七
- Java设计模式之十七(解释器模式)
- (十七)Java设计模式之观察者模式
- 【设计模式】之十七Flyweight
- 设计模式(十七)之State
- java学习笔记(二十七)设计模式
- Java设计模式之二十七(单一职责原则)
- 设计模式学习(十七):观察者模式
- JAVA基础之设计模式
- 十七 设计模式之门面模式
- 设计模式之(十七)状态模式State
- 黑马程序员----Java基础学习之模板设计模式
- JAVA设计模式十七--Composite(组合模式)
- Java设计模式十七:外观模式(Facade)
- JAVA设计模式十七:--Composite(组合模式)
- JAVA设计模式十七--Composite(组合模式)
- JAVA设计模式十七--Composite(组合模式)
- Java设计模式《十七》单例模式
- #OSG+VS#第五周
- SSL 字符串
- LintCode :最大数
- tomcat7 内存配置修改方法
- 通过GBDT组合的特征作为LR的输入
- java基础学习之设计模式 十七
- 两种“两数互换的方式”
- java HotSpot虚拟机垃圾回收优化(一、Introduction)
- @TransactionConfiguration过时与替代写法
- computer-database 项目需求提测
- 使用asm.jar将Android手机屏幕投影到电脑
- 116. Populating Next Right Pointers in Each Node(unsolved)
- 关于typedef的用法小结
- 回炉重造,第七话:初探php函数