Pioneer.HengYu

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

一.开发模式

  单例模式  工厂模式  MVC架构  dao开发模型  代理模式  观察者模式

1.单例模式

– 一个只有一个对象,并且自动向整个系统提供这个对象

– 生产,获取唯一一个对象的方法

单例模式实现:

– 拥有一个私有构造器
– 提供一个自身静态私有的成员变量
– 提供一个公有的静态公有的方法

final关键字
  final可以修饰的元素:
      类:不能被继承
      变量(属性和局部变量):不能被重新赋值 在声明时赋值,或在构造器中赋值,系统不会对final属性默认的赋初始值
      方法:不能在子类中被覆盖,即不能修改

2.工厂模式

–批量生产有共同特点的一类对象 

 简单工厂(静态工厂)  : 静态工厂的生产方法生产出了具有接口共性特点不同产品

3.抽象类    extends    

–抽象方法和具体方法的集合 

–抽象方法abstract修饰,没有方法体的方法,没有具体实现方法的代码,只有方法声明,没有方法实现的方法

      单继承

抽象类的规则

  注意:
 抽象类不能被实例化;
 其包含的抽象方法必须在其子类中被实现,否则该子类只能声明为abstract;
 抽象方法不能为static;
 在下列情况下,一个类必须声明为抽象类:
 当一个类的一个或多个方法是抽象方法时;
 当类是一个抽象类的子类,并且没有实现父类的所有抽象方法,即只实现部分;
 当一个类实现一个接口,并且不能为全部抽象方法都提供实现时;

4.接口  implements  

 接口中只包含常量和抽象方法,而没有变量和方法的实现
 接口对类来说是一套规范,是一套行为协议
 接口不是一个类,不能实例化

接口是常量和抽象方法的集合

  可以多重实现

 注意:

 接口不是一个类,没有构造器,不能被实例化
 接口使用interface关键字来定义,而不是class
  接口默认:
 常量:public static final
 抽象方法: public abstract

5.内部类 

  里面的类可以直接使用外部类的属性和方法

    外部类使用里面的类的属性方法时,需要实例化里面的类

 

 

单例模式

 1 package singleton; 2 
 3 public class A { 4 
 5    }
 6 
 1 package singleton;
 2 
 3 public class Sin {    //  单例类
 4     
 5     /*特点:
 6     某个类只能有一个实例
 7     它必须自行创建这个示例
 8     必须自行向整个系统提供这个实例*/
 9     
10         int  x=10;
11     
12     private   static  final  Sin   s1=new Sin();
13     
14     
15     private   Sin(){}
16 
17        //必须自行向整个系统提供这个实例
18     public   static   Sin     getSin(){
19         
20         return  s1;
21     } 
22     
23     public   void   abc(){}
24 
25     
26 
27 }
 1 package singleton;
 2 
 3 public class Main9 {
 4 
 5     /**
 6      * @param args
 7      */
 8     public static void main(String[] args) {
 9           int  x=10;
10         
11           Sin   s1=Sin.getSin();
12           System.out.println(s1.x);  
13           
14           
15           
16             
17           Sin   s2=Sin.getSin();
18           System.out.println(s2.x);  
19           
20           System.out.println(s1==s2);  
21           
22             A  a1=new A();
23             A  a2=new A();
24             System.out.println(a1==a2);  
25           
26           
27     }
28 
29 }

 

工厂模式

 接口

 1 package factory;
 2 
 3 public interface Toy {   //玩具接口---常量接口
 4     
 5     //常量
 6     String  name="玩具";
 7     double   price=10.0;
 8     //抽象方法
 9     public   void   show();     //单方法接口---最容易扩展需求
10 
11 }

接口的实现类

 1 package factory;
 2 
 3 public class Car implements Toy {   //玩具汽车
 4 
 5     @Override    //重写接口的方法
 6     public void show() {
 7         System.out.println(Toy.name);    //直接使用接口名称调用常量
 8     }  
 9     
10     //玩具车新增的方法
11     public   void  run(String  battcell){   //接收参数电池
12         System.out.println("玩具车需要有"+battcell+"才能向前跑");        
13     }
14     
15 
16 }
 1 package factory;
 2 
 3 public class Dull implements Toy {    //玩偶
 4 
 5     @Override
 6     public void show() {        
 7         System.out.println(Toy.price); 
 8     }
 9 
10 }
 1 package factory;
 2 
 3 public class Brick implements Toy {   //积木
 4 
 5     @Override
 6     public void show() {
 7         
 8     }
 9 
10 }

工厂类

 1 package factory;
 2 /*
 3  * 
 4  *     ==      判定相等   ----  判定内存地址是否一致   (看是不是一个东西)
 5  *     equals  判定相等  ----  判定值是否一致                 (看是不是长的像)
 6  * 
 7  * 
 8  */
 9 public class ToyFactory { // 工厂----生产玩具产品
10 
11     // 生产---返回值为接口类型
12     public   static  Toy getToy(String material) { // 参数为原材料
13 
14         if ( "金属".equals(material)|| material=="金属" ) {  
15             return new Car(); // 匿名对象
16         } else if ("塑料".equals(material) || material=="塑料" ) {
17             return new Dull();
18         } else if ("木材".equals(material)||material=="木材") {
19             return new Brick();
20         } else {
21             System.out.println("您的材料有误");
22             return null;
23         }
24 
25     }
26 
27 }

主方法

 1 package factory;
 2 
 3 public class Main12 {
 4 
 5     /**
 6      * 向上转型:    父类  ----  子类构造方法                      接口  -----   实现类构造方法
 7      * 
 8      * 向下转型:   子类----- (子类)父类构造方法                   实现类    ------(实现类)返回接口类型
 9      * 
10      */
11     public static void main(String[] args) {
12          // ToyFactory  toyFactory=new ToyFactory();
13          // System.out.println(toyFactory.getToy("塑料"));  //直接输出对象,得到了对象的字符串表示
14           //Dull   d1=(Dull)toyFactory.getToy("塑料");
15          // d1.show();
16         
17         ((Dull)ToyFactory.getToy("塑料")).show();   //向下转型
18         ((Car)ToyFactory.getToy("金属")).show();
19         
20     }
21 
22 }

 

抽象类

 1 package abstract1;
 2 
 3 public abstract class Abs {   //抽象类
 4     
 5       // 抽象
 6     int  x;
 7     
 8     //抽象方法---没有具体实现方法的代码
 9     public abstract  void  show();
10     
11     
12     //具体方法(不推荐)
13     public  void  test(){
14         System.out.println("Abs.test()");
15     }
16 
17 }
 1 package abstract1;
 2 
 3 public class AbsImp extends Abs {   //完成具体功能
 4 
 5     @Override //标注类型:  重写
 6     public void show() {
 7         
 8          System.out.println(1234567);
 9          
10     }
11 
12 }

 

接口

 1 package interface1;
 2 
 3 public interface Animal {   //动物接口
 4     
 5     //常量
 6       boolean   sleep=true;
 7       
 8       
 9       //抽象方法
10       public   void    eat(String  x);
11 
12 }
 1 package interface1;
 2 
 3 public class Horse implements Vehicle, Animal { //
 4 
 5     @Override
 6     public void transport(String x) {
 7         
 8     }
 9 
10     @Override
11     public void eat(String x) {
12     
13     }  
14 
15 }

 

内部类

 1 package test;
 2 
 3 public class Outer {     //
 4     int x=1;
 5     public void show(){
 6         System.out.println("Outer.show()");
 7         Inter inter =new Inter();
 8         inter.test();
 9     }
10     
11     public  class  Inter{ //内部类
12         public  void  test(){
13             System.out.println(x);
14         }    
15     }
16 }

 

posted on 2017-04-08 19:49  Pioneer.HengYu  阅读(215)  评论(0编辑  收藏  举报