diff --git a/app/build.gradle b/app/build.gradle index f7ff38d..2f72096 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -6,10 +6,10 @@ android { defaultConfig { applicationId "com.example.jingbin.designpattern" minSdkVersion 19 - targetSdkVersion 28 - versionCode 3 - versionName "2.1" - testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" + targetSdkVersion 29 + versionCode 5 + versionName "3.1" + testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner' } buildTypes { release { @@ -23,6 +23,11 @@ android { enabled = true } + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + // 其他 designpattern signingConfigs { release { @@ -41,16 +46,13 @@ android { } dependencies { - androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2.2', { + androidTestImplementation('androidx.test.espresso:espresso-core:3.1.0', { exclude group: 'com.android.support', module: 'support-annotations' }) - implementation 'com.android.support:appcompat-v7:28.0.0' - testImplementation 'junit:junit:4.12' + implementation 'androidx.appcompat:appcompat:1.0.0' + testImplementation 'junit:junit:4.13.2' implementation fileTree(include: ['*.jar'], dir: 'libs') - //增加这二句 - implementation 'com.jakewharton:butterknife:8.8.1' - annotationProcessor "com.jakewharton:butterknife-compiler:8.8.1" - implementation "com.github.youlookwhat:ByRecyclerView:1.0.15-support" - implementation "com.android.support:recyclerview-v7:28.0.0" + implementation "com.github.youlookwhat:ByRecyclerView:1.3.2" + implementation 'androidx.recyclerview:recyclerview:1.2.1' } diff --git a/app/src/androidTest/java/com/example/jingbin/designpattern/ExampleInstrumentedTest.java b/app/src/androidTest/java/com/example/jingbin/designpattern/ExampleInstrumentedTest.java index ec37750..c3f8c80 100644 --- a/app/src/androidTest/java/com/example/jingbin/designpattern/ExampleInstrumentedTest.java +++ b/app/src/androidTest/java/com/example/jingbin/designpattern/ExampleInstrumentedTest.java @@ -1,8 +1,8 @@ package com.example.jingbin.designpattern; import android.content.Context; -import android.support.test.InstrumentationRegistry; -import android.support.test.runner.AndroidJUnit4; +import androidx.test.platform.app.InstrumentationRegistry; +import androidx.test.ext.junit.runners.AndroidJUnit4; import org.junit.Test; import org.junit.runner.RunWith; diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 68932bd..0b1aefd 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -15,76 +15,31 @@ - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/example/jingbin/designpattern/MainActivity.java b/app/src/main/java/com/example/jingbin/designpattern/MainActivity.java index 9bbd85a..ad9ca59 100644 --- a/app/src/main/java/com/example/jingbin/designpattern/MainActivity.java +++ b/app/src/main/java/com/example/jingbin/designpattern/MainActivity.java @@ -1,15 +1,16 @@ package com.example.jingbin.designpattern; import android.content.Intent; -import android.databinding.DataBindingUtil; import android.net.Uri; import android.os.Bundle; -import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.GridLayoutManager; import android.view.Menu; import android.view.MenuItem; import android.view.View; +import androidx.appcompat.app.AppCompatActivity; +import androidx.databinding.DataBindingUtil; +import androidx.recyclerview.widget.GridLayoutManager; + import com.example.jingbin.designpattern.adapter.AdapterActivity; import com.example.jingbin.designpattern.bridge.BridgeActivity; import com.example.jingbin.designpattern.builder.BuilderActivity; @@ -85,7 +86,7 @@ protected void onCreate(Bundle savedInstanceState) { private void initView() { GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 2); binding.recyclerView.setLayoutManager(gridLayoutManager); - binding.recyclerView.addItemDecoration(new GridSpaceItemDecoration(2, 10).setEndFromSize(0)); + binding.recyclerView.addItemDecoration(new GridSpaceItemDecoration(10).setEndFromSize(0)); binding.recyclerView.setAdapter(new BaseRecyclerAdapter(R.layout.item_main, Arrays.asList(patterns)) { @Override protected void bindView(BaseByViewHolder holder, String title, int position) { diff --git a/app/src/main/java/com/example/jingbin/designpattern/adapter/AdapterActivity.java b/app/src/main/java/com/example/jingbin/designpattern/adapter/AdapterActivity.java index a31db3a..c59bac0 100644 --- a/app/src/main/java/com/example/jingbin/designpattern/adapter/AdapterActivity.java +++ b/app/src/main/java/com/example/jingbin/designpattern/adapter/AdapterActivity.java @@ -1,18 +1,15 @@ package com.example.jingbin.designpattern.adapter; import android.os.Bundle; -import android.support.v7.app.AppCompatActivity; import android.view.View; -import android.widget.Button; -import android.widget.LinearLayout; -import android.widget.TextView; + +import androidx.appcompat.app.AppCompatActivity; +import androidx.databinding.DataBindingUtil; import com.example.jingbin.designpattern.R; import com.example.jingbin.designpattern.app.AppConstant; import com.example.jingbin.designpattern.app.EMTagHandler; - -import butterknife.BindView; -import butterknife.ButterKnife; +import com.example.jingbin.designpattern.databinding.ActivityAdapterBinding; /** * 适配器模式: @@ -22,25 +19,15 @@ */ public class AdapterActivity extends AppCompatActivity { - @BindView(R.id.tv_define) - TextView tvDefine; - @BindView(R.id.activity_adapter) - LinearLayout activityAdapter; - @BindView(R.id.by_adapter) - Button byAdapter; - @BindView(R.id.bt_adapter_text) - Button btAdapterText; - @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.activity_adapter); - ButterKnife.bind(this); + ActivityAdapterBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_adapter); setTitle("适配器模式"); - tvDefine.setText(EMTagHandler.fromHtml(AppConstant.ADAPTER_DEFINE)); - btAdapterText.setText("将220V家用电转换为5V"); + binding.tvDefine.setText(EMTagHandler.fromHtml(AppConstant.ADAPTER_DEFINE)); + binding.btAdapterText.setText("将220V家用电转换为5V"); - btAdapterText.setOnClickListener(new View.OnClickListener() { + binding.btAdapterText.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { /** diff --git a/app/src/main/java/com/example/jingbin/designpattern/bridge/BridgeActivity.java b/app/src/main/java/com/example/jingbin/designpattern/bridge/BridgeActivity.java index 47bc79c..188e4e6 100644 --- a/app/src/main/java/com/example/jingbin/designpattern/bridge/BridgeActivity.java +++ b/app/src/main/java/com/example/jingbin/designpattern/bridge/BridgeActivity.java @@ -1,8 +1,8 @@ package com.example.jingbin.designpattern.bridge; -import android.databinding.DataBindingUtil; +import androidx.databinding.DataBindingUtil; import android.os.Bundle; -import android.support.v7.app.AppCompatActivity; +import androidx.appcompat.app.AppCompatActivity; import android.view.View; import com.example.jingbin.designpattern.R; diff --git a/app/src/main/java/com/example/jingbin/designpattern/builder/BuilderActivity.java b/app/src/main/java/com/example/jingbin/designpattern/builder/BuilderActivity.java index a8132fa..472cd4d 100644 --- a/app/src/main/java/com/example/jingbin/designpattern/builder/BuilderActivity.java +++ b/app/src/main/java/com/example/jingbin/designpattern/builder/BuilderActivity.java @@ -1,8 +1,8 @@ package com.example.jingbin.designpattern.builder; -import android.databinding.DataBindingUtil; +import androidx.databinding.DataBindingUtil; import android.os.Bundle; -import android.support.v7.app.AppCompatActivity; +import androidx.appcompat.app.AppCompatActivity; import android.view.View; import com.example.jingbin.designpattern.R; diff --git a/app/src/main/java/com/example/jingbin/designpattern/chainofresponsibility/ChainOfResponsibilityActivity.java b/app/src/main/java/com/example/jingbin/designpattern/chainofresponsibility/ChainOfResponsibilityActivity.java index 95f29b6..33d01a8 100644 --- a/app/src/main/java/com/example/jingbin/designpattern/chainofresponsibility/ChainOfResponsibilityActivity.java +++ b/app/src/main/java/com/example/jingbin/designpattern/chainofresponsibility/ChainOfResponsibilityActivity.java @@ -1,8 +1,8 @@ package com.example.jingbin.designpattern.chainofresponsibility; -import android.databinding.DataBindingUtil; +import androidx.databinding.DataBindingUtil; import android.os.Bundle; -import android.support.v7.app.AppCompatActivity; +import androidx.appcompat.app.AppCompatActivity; import android.view.View; import com.example.jingbin.designpattern.R; diff --git a/app/src/main/java/com/example/jingbin/designpattern/command/CommandActivity.java b/app/src/main/java/com/example/jingbin/designpattern/command/CommandActivity.java index d69f023..95378b1 100644 --- a/app/src/main/java/com/example/jingbin/designpattern/command/CommandActivity.java +++ b/app/src/main/java/com/example/jingbin/designpattern/command/CommandActivity.java @@ -1,18 +1,15 @@ package com.example.jingbin.designpattern.command; import android.os.Bundle; -import android.support.v7.app.AppCompatActivity; import android.view.View; -import android.widget.Button; -import android.widget.LinearLayout; -import android.widget.TextView; + +import androidx.appcompat.app.AppCompatActivity; +import androidx.databinding.DataBindingUtil; import com.example.jingbin.designpattern.R; import com.example.jingbin.designpattern.app.AppConstant; import com.example.jingbin.designpattern.app.EMTagHandler; - -import butterknife.BindView; -import butterknife.ButterKnife; +import com.example.jingbin.designpattern.databinding.ActivityCommandBinding; /** * 命令模式: @@ -25,55 +22,30 @@ */ public class CommandActivity extends AppCompatActivity implements View.OnClickListener { - @BindView(R.id.tv_define) - TextView tvDefine; - @BindView(R.id.activity_command) - LinearLayout activityCommand; - @BindView(R.id.bt_command) - Button btCommand; - @BindView(R.id.bt_zero) - Button btZero; - @BindView(R.id.bt_three) - Button btThree; - @BindView(R.id.bt_six) - Button btSix; - @BindView(R.id.bt_one) - Button btOne; - @BindView(R.id.bt_four) - Button btFour; - @BindView(R.id.bt_seven) - Button btSeven; - @BindView(R.id.bt_two) - Button btTwo; - @BindView(R.id.bt_five) - Button btFive; - @BindView(R.id.bt_no) - Button btNo; - private ControlPanel controlPanel; + private ActivityCommandBinding binding; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.activity_command); - ButterKnife.bind(this); + binding = DataBindingUtil.setContentView(this, R.layout.activity_command); setTitle("命令模式"); - tvDefine.setText(EMTagHandler.fromHtml(AppConstant.COMMAND_DEFINE)); + binding.tvDefine.setText(EMTagHandler.fromHtml(AppConstant.COMMAND_DEFINE)); setCommands(); initListener(); } private void initListener() { - btZero.setOnClickListener(this); - btOne.setOnClickListener(this); - btTwo.setOnClickListener(this); - btThree.setOnClickListener(this); - btFour.setOnClickListener(this); - btFive.setOnClickListener(this); - btSix.setOnClickListener(this); - btSeven.setOnClickListener(this); - btNo.setOnClickListener(this); + binding.btZero.setOnClickListener(this); + binding.btOne.setOnClickListener(this); + binding.btTwo.setOnClickListener(this); + binding.btThree.setOnClickListener(this); + binding.btFour.setOnClickListener(this); + binding.btFive.setOnClickListener(this); + binding.btSix.setOnClickListener(this); + binding.btSeven.setOnClickListener(this); + binding.btNo.setOnClickListener(this); } private void setCommands() { diff --git a/app/src/main/java/com/example/jingbin/designpattern/composite/CompositeActivity.java b/app/src/main/java/com/example/jingbin/designpattern/composite/CompositeActivity.java index bce75c5..feb990e 100644 --- a/app/src/main/java/com/example/jingbin/designpattern/composite/CompositeActivity.java +++ b/app/src/main/java/com/example/jingbin/designpattern/composite/CompositeActivity.java @@ -1,8 +1,8 @@ package com.example.jingbin.designpattern.composite; -import android.databinding.DataBindingUtil; +import androidx.databinding.DataBindingUtil; import android.os.Bundle; -import android.support.v7.app.AppCompatActivity; +import androidx.appcompat.app.AppCompatActivity; import android.util.Log; import android.view.View; diff --git a/app/src/main/java/com/example/jingbin/designpattern/decorator/DecoratorActivity.java b/app/src/main/java/com/example/jingbin/designpattern/decorator/DecoratorActivity.java index f752663..f312096 100644 --- a/app/src/main/java/com/example/jingbin/designpattern/decorator/DecoratorActivity.java +++ b/app/src/main/java/com/example/jingbin/designpattern/decorator/DecoratorActivity.java @@ -1,24 +1,21 @@ package com.example.jingbin.designpattern.decorator; import android.os.Bundle; -import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.view.View; -import android.widget.Button; -import android.widget.LinearLayout; -import android.widget.TextView; + +import androidx.appcompat.app.AppCompatActivity; +import androidx.databinding.DataBindingUtil; import com.example.jingbin.designpattern.R; import com.example.jingbin.designpattern.app.AppConstant; +import com.example.jingbin.designpattern.app.EMTagHandler; +import com.example.jingbin.designpattern.databinding.ActivityDecoratorBinding; import com.example.jingbin.designpattern.decorator.equip.RingEquip; import com.example.jingbin.designpattern.decorator.equip.ShoeEquip; import com.example.jingbin.designpattern.decorator.gem.BlueGemDecorator; import com.example.jingbin.designpattern.decorator.gem.RedGemDecorator; import com.example.jingbin.designpattern.decorator.gem.YellowGemDecorator; -import com.example.jingbin.designpattern.app.EMTagHandler; - -import butterknife.BindView; -import butterknife.ButterKnife; /** * 装饰者模式: @@ -33,31 +30,19 @@ */ public class DecoratorActivity extends AppCompatActivity implements View.OnClickListener { - @BindView(R.id.bt_decorator) - Button btDecorator; - @BindView(R.id.tv_define) - TextView tvDefine; - @BindView(R.id.activity_decorator) - LinearLayout activityDecorator; - @BindView(R.id.bt_demo1) - Button btDemo1; - @BindView(R.id.bt_demo2) - Button btDemo2; - @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.activity_decorator); - ButterKnife.bind(this); + ActivityDecoratorBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_decorator); setTitle("装饰者模式"); - tvDefine.setText(EMTagHandler.fromHtml(AppConstant.DECORATOR_DEFINE)); - btDemo1.setText("一个镶嵌2颗红宝石,1颗蓝宝石的靴子"); - btDemo2.setText("一个镶嵌1颗红宝石,1颗蓝宝石,1颗黄宝石的戒指"); + binding.tvDefine.setText(EMTagHandler.fromHtml(AppConstant.DECORATOR_DEFINE)); + binding.btDemo1.setText("一个镶嵌2颗红宝石,1颗蓝宝石的靴子"); + binding.btDemo2.setText("一个镶嵌1颗红宝石,1颗蓝宝石,1颗黄宝石的戒指"); - btDecorator.setOnClickListener(this); - btDemo1.setOnClickListener(this); - btDemo2.setOnClickListener(this); + binding.btDecorator.setOnClickListener(this); + binding.btDemo1.setOnClickListener(this); + binding.btDemo2.setOnClickListener(this); } @Override diff --git a/app/src/main/java/com/example/jingbin/designpattern/facade/FacadeActivity.java b/app/src/main/java/com/example/jingbin/designpattern/facade/FacadeActivity.java index a0a6026..bb7c86f 100644 --- a/app/src/main/java/com/example/jingbin/designpattern/facade/FacadeActivity.java +++ b/app/src/main/java/com/example/jingbin/designpattern/facade/FacadeActivity.java @@ -1,14 +1,15 @@ package com.example.jingbin.designpattern.facade; import android.os.Bundle; -import android.support.v7.app.AppCompatActivity; import android.view.View; -import android.widget.Button; -import android.widget.TextView; + +import androidx.appcompat.app.AppCompatActivity; +import androidx.databinding.DataBindingUtil; import com.example.jingbin.designpattern.R; import com.example.jingbin.designpattern.app.AppConstant; import com.example.jingbin.designpattern.app.EMTagHandler; +import com.example.jingbin.designpattern.databinding.ActivityFacadeBinding; import com.example.jingbin.designpattern.facade.device.Computer; import com.example.jingbin.designpattern.facade.device.Light; import com.example.jingbin.designpattern.facade.device.Player; @@ -16,9 +17,6 @@ import com.example.jingbin.designpattern.facade.device.Projector; import com.example.jingbin.designpattern.facade.theater.HomeTheaterFacade; -import butterknife.BindView; -import butterknife.ButterKnife; - /** * 外观模式: * 定义:提供一个统一的接口,用来访问子系统中的一群接口,外观定义了一个高层的接口,让子系统更容易使用。 @@ -39,28 +37,18 @@ */ public class FacadeActivity extends AppCompatActivity implements View.OnClickListener { - @BindView(R.id.bt_facade) - Button btFacade; - @BindView(R.id.tv_define) - TextView tvDefine; - @BindView(R.id.bt_open) - Button btOpen; - @BindView(R.id.bt_close) - Button btClose; - private HomeTheaterFacade homeTheaterFacade; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.activity_facade); - ButterKnife.bind(this); + ActivityFacadeBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_facade); setTitle("外观模式"); - tvDefine.setText(EMTagHandler.fromHtml(AppConstant.FACADE_DEFINE)); + binding.tvDefine.setText(EMTagHandler.fromHtml(AppConstant.FACADE_DEFINE)); - btFacade.setOnClickListener(this); - btOpen.setOnClickListener(this); - btClose.setOnClickListener(this); + binding.btFacade.setOnClickListener(this); + binding.btOpen.setOnClickListener(this); + binding.btClose.setOnClickListener(this); } @Override diff --git a/app/src/main/java/com/example/jingbin/designpattern/factory/FactoryActivity.java b/app/src/main/java/com/example/jingbin/designpattern/factory/FactoryActivity.java index 670931e..6c1e0da 100644 --- a/app/src/main/java/com/example/jingbin/designpattern/factory/FactoryActivity.java +++ b/app/src/main/java/com/example/jingbin/designpattern/factory/FactoryActivity.java @@ -1,16 +1,16 @@ package com.example.jingbin.designpattern.factory; import android.os.Bundle; -import android.support.v7.app.AppCompatActivity; import android.view.View; -import android.widget.Button; -import android.widget.LinearLayout; -import android.widget.TextView; import android.widget.Toast; +import androidx.appcompat.app.AppCompatActivity; +import androidx.databinding.DataBindingUtil; + import com.example.jingbin.designpattern.R; import com.example.jingbin.designpattern.app.AppConstant; import com.example.jingbin.designpattern.app.EMTagHandler; +import com.example.jingbin.designpattern.databinding.ActivityRoujiaMoStoreBinding; import com.example.jingbin.designpattern.factory.cxgc.XianRoujiaMoTeSeStore; import com.example.jingbin.designpattern.factory.cxgc.XianSimpleRoujiaMoTeSeFactory; import com.example.jingbin.designpattern.factory.gcff.XianRoujiaMoStore; @@ -18,9 +18,6 @@ import com.example.jingbin.designpattern.factory.jdgc.RoujiaMoStore; import com.example.jingbin.designpattern.factory.jdgc.SimpleRoujiaMoFactory; -import butterknife.BindView; -import butterknife.ButterKnife; - /** * Created by jingbin on 2016/10/22. *

@@ -36,41 +33,25 @@ */ public class FactoryActivity extends AppCompatActivity implements View.OnClickListener { - @BindView(R.id.bt_simple_factory) - Button btSimpleFactory; - @BindView(R.id.bt_factory_method) - Button btFactoryMethod; - @BindView(R.id.bt_static_factory) - Button btStaticFactory; - @BindView(R.id.bt_abstract_factory) - Button btAbstractFactory; - @BindView(R.id.tv_define) - TextView tvDefine; - @BindView(R.id.activity_roujia_mo_store) - LinearLayout activityRoujiaMoStore; - @BindView(R.id.tv_define2) - TextView tvDefine2; - @BindView(R.id.tv_define3) - TextView tvDefine3; + private ActivityRoujiaMoStoreBinding binding; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.activity_roujia_mo_store); - ButterKnife.bind(this); + binding = DataBindingUtil.setContentView(this, R.layout.activity_roujia_mo_store); setTitle("工厂模式"); - tvDefine.setText(EMTagHandler.fromHtml(AppConstant.JDGC_FACTORY_DEFINE)); - tvDefine2.setText(EMTagHandler.fromHtml(AppConstant.GCFF_FACTORY_DEFINE)); - tvDefine3.setText(EMTagHandler.fromHtml(AppConstant.CXGC_FACTORY_DEFINE)); + binding.tvDefine.setText(EMTagHandler.fromHtml(AppConstant.JDGC_FACTORY_DEFINE)); + binding.tvDefine2.setText(EMTagHandler.fromHtml(AppConstant.GCFF_FACTORY_DEFINE)); + binding.tvDefine3.setText(EMTagHandler.fromHtml(AppConstant.CXGC_FACTORY_DEFINE)); initListener(); } private void initListener() { - btStaticFactory.setOnClickListener(this); - btSimpleFactory.setOnClickListener(this); - btFactoryMethod.setOnClickListener(this); - btAbstractFactory.setOnClickListener(this); + binding.btStaticFactory.setOnClickListener(this); + binding.btSimpleFactory.setOnClickListener(this); + binding.btFactoryMethod.setOnClickListener(this); + binding.btAbstractFactory.setOnClickListener(this); } @Override diff --git a/app/src/main/java/com/example/jingbin/designpattern/flyweight/FlyweightActivity.java b/app/src/main/java/com/example/jingbin/designpattern/flyweight/FlyweightActivity.java index ba0dc85..11fbfd5 100644 --- a/app/src/main/java/com/example/jingbin/designpattern/flyweight/FlyweightActivity.java +++ b/app/src/main/java/com/example/jingbin/designpattern/flyweight/FlyweightActivity.java @@ -1,8 +1,8 @@ package com.example.jingbin.designpattern.flyweight; -import android.databinding.DataBindingUtil; +import androidx.databinding.DataBindingUtil; import android.os.Bundle; -import android.support.v7.app.AppCompatActivity; +import androidx.appcompat.app.AppCompatActivity; import android.view.View; import com.example.jingbin.designpattern.R; diff --git a/app/src/main/java/com/example/jingbin/designpattern/interpreter/InterpreterActivity.java b/app/src/main/java/com/example/jingbin/designpattern/interpreter/InterpreterActivity.java index cceff56..99c191b 100644 --- a/app/src/main/java/com/example/jingbin/designpattern/interpreter/InterpreterActivity.java +++ b/app/src/main/java/com/example/jingbin/designpattern/interpreter/InterpreterActivity.java @@ -1,8 +1,8 @@ package com.example.jingbin.designpattern.interpreter; -import android.databinding.DataBindingUtil; +import androidx.databinding.DataBindingUtil; import android.os.Bundle; -import android.support.v7.app.AppCompatActivity; +import androidx.appcompat.app.AppCompatActivity; import android.util.Log; import android.view.View; diff --git a/app/src/main/java/com/example/jingbin/designpattern/iterator/IteratorActivity.java b/app/src/main/java/com/example/jingbin/designpattern/iterator/IteratorActivity.java index d04c860..654a89f 100644 --- a/app/src/main/java/com/example/jingbin/designpattern/iterator/IteratorActivity.java +++ b/app/src/main/java/com/example/jingbin/designpattern/iterator/IteratorActivity.java @@ -1,8 +1,8 @@ package com.example.jingbin.designpattern.iterator; -import android.databinding.DataBindingUtil; +import androidx.databinding.DataBindingUtil; import android.os.Bundle; -import android.support.v7.app.AppCompatActivity; +import androidx.appcompat.app.AppCompatActivity; import android.util.Log; import android.view.View; diff --git a/app/src/main/java/com/example/jingbin/designpattern/mediator/MediatorActivity.java b/app/src/main/java/com/example/jingbin/designpattern/mediator/MediatorActivity.java index 773c8c1..a54aa78 100644 --- a/app/src/main/java/com/example/jingbin/designpattern/mediator/MediatorActivity.java +++ b/app/src/main/java/com/example/jingbin/designpattern/mediator/MediatorActivity.java @@ -1,8 +1,8 @@ package com.example.jingbin.designpattern.mediator; -import android.databinding.DataBindingUtil; +import androidx.databinding.DataBindingUtil; import android.os.Bundle; -import android.support.v7.app.AppCompatActivity; +import androidx.appcompat.app.AppCompatActivity; import android.view.View; import com.example.jingbin.designpattern.R; diff --git a/app/src/main/java/com/example/jingbin/designpattern/memento/MementoActivity.java b/app/src/main/java/com/example/jingbin/designpattern/memento/MementoActivity.java index d4a9f2f..6243645 100644 --- a/app/src/main/java/com/example/jingbin/designpattern/memento/MementoActivity.java +++ b/app/src/main/java/com/example/jingbin/designpattern/memento/MementoActivity.java @@ -1,8 +1,8 @@ package com.example.jingbin.designpattern.memento; -import android.databinding.DataBindingUtil; +import androidx.databinding.DataBindingUtil; import android.os.Bundle; -import android.support.v7.app.AppCompatActivity; +import androidx.appcompat.app.AppCompatActivity; import android.util.Log; import android.view.View; diff --git a/app/src/main/java/com/example/jingbin/designpattern/observer/ObserverActivity.java b/app/src/main/java/com/example/jingbin/designpattern/observer/ObserverActivity.java index ee5d8fa..77abcb2 100644 --- a/app/src/main/java/com/example/jingbin/designpattern/observer/ObserverActivity.java +++ b/app/src/main/java/com/example/jingbin/designpattern/observer/ObserverActivity.java @@ -1,15 +1,15 @@ package com.example.jingbin.designpattern.observer; import android.os.Bundle; -import android.support.v7.app.AppCompatActivity; import android.view.View; -import android.widget.Button; -import android.widget.LinearLayout; -import android.widget.TextView; + +import androidx.appcompat.app.AppCompatActivity; +import androidx.databinding.DataBindingUtil; import com.example.jingbin.designpattern.R; import com.example.jingbin.designpattern.app.AppConstant; import com.example.jingbin.designpattern.app.EMTagHandler; +import com.example.jingbin.designpattern.databinding.ActivityObserverBinding; import com.example.jingbin.designpattern.observer.classs.ObjectFor3D; import com.example.jingbin.designpattern.observer.classs.ObserverUser1; import com.example.jingbin.designpattern.observer.classs.ObserverUser2; @@ -17,9 +17,6 @@ import com.example.jingbin.designpattern.observer.javautil.SubjectFor3d; import com.example.jingbin.designpattern.observer.javautil.SubjectForSSQ; -import butterknife.BindView; -import butterknife.ButterKnife; - /** * 可以看出,使用Java内置的类实现观察者模式,代码非常简洁, * 对了addObserver,removeObserver,notifyObservers都已经为我们实现了, @@ -34,17 +31,6 @@ */ public class ObserverActivity extends AppCompatActivity implements View.OnClickListener { - @BindView(R.id.tv_define) - TextView tvDefine; - @BindView(R.id.bt_observer) - Button btObserver; - @BindView(R.id.bt_myself) - Button btMyself; - @BindView(R.id.bt_system) - Button btSystem; - @BindView(R.id.activity_observer) - LinearLayout activityObserver; - private ObjectFor3D objectFor3D; private ObserverUser1 observerUser1; private ObserverUser2 observerUser2; @@ -52,13 +38,12 @@ public class ObserverActivity extends AppCompatActivity implements View.OnClickL @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.activity_observer); - ButterKnife.bind(this); + ActivityObserverBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_observer); setTitle("观察者模式"); - tvDefine.setText(EMTagHandler.fromHtml(AppConstant.OBSERVER_DEFINE)); + binding.tvDefine.setText(EMTagHandler.fromHtml(AppConstant.OBSERVER_DEFINE)); - btMyself.setOnClickListener(this); - btSystem.setOnClickListener(this); + binding.btMyself.setOnClickListener(this); + binding.btSystem.setOnClickListener(this); } diff --git a/app/src/main/java/com/example/jingbin/designpattern/prototype/PrototypeActivity.java b/app/src/main/java/com/example/jingbin/designpattern/prototype/PrototypeActivity.java index 81d74b4..c4e4b34 100644 --- a/app/src/main/java/com/example/jingbin/designpattern/prototype/PrototypeActivity.java +++ b/app/src/main/java/com/example/jingbin/designpattern/prototype/PrototypeActivity.java @@ -1,8 +1,8 @@ package com.example.jingbin.designpattern.prototype; -import android.databinding.DataBindingUtil; +import androidx.databinding.DataBindingUtil; import android.os.Bundle; -import android.support.v7.app.AppCompatActivity; +import androidx.appcompat.app.AppCompatActivity; import android.util.Log; import android.view.View; diff --git a/app/src/main/java/com/example/jingbin/designpattern/proxy/ProxyActivity.java b/app/src/main/java/com/example/jingbin/designpattern/proxy/ProxyActivity.java index a36cf40..03aaaed 100644 --- a/app/src/main/java/com/example/jingbin/designpattern/proxy/ProxyActivity.java +++ b/app/src/main/java/com/example/jingbin/designpattern/proxy/ProxyActivity.java @@ -1,10 +1,11 @@ package com.example.jingbin.designpattern.proxy; -import android.databinding.DataBindingUtil; import android.os.Bundle; -import android.support.v7.app.AppCompatActivity; import android.view.View; +import androidx.appcompat.app.AppCompatActivity; +import androidx.databinding.DataBindingUtil; + import com.example.jingbin.designpattern.R; import com.example.jingbin.designpattern.app.AppConstant; import com.example.jingbin.designpattern.app.EMTagHandler; diff --git a/app/src/main/java/com/example/jingbin/designpattern/singleton/SingletonActivity.java b/app/src/main/java/com/example/jingbin/designpattern/singleton/SingletonActivity.java index 49efd3d..ccbaba6 100644 --- a/app/src/main/java/com/example/jingbin/designpattern/singleton/SingletonActivity.java +++ b/app/src/main/java/com/example/jingbin/designpattern/singleton/SingletonActivity.java @@ -1,50 +1,33 @@ package com.example.jingbin.designpattern.singleton; import android.os.Bundle; -import android.support.v7.app.AppCompatActivity; import android.view.View; -import android.widget.Button; -import android.widget.LinearLayout; -import android.widget.TextView; + +import androidx.appcompat.app.AppCompatActivity; +import androidx.databinding.DataBindingUtil; import com.example.jingbin.designpattern.R; import com.example.jingbin.designpattern.app.AppConstant; import com.example.jingbin.designpattern.app.EMTagHandler; +import com.example.jingbin.designpattern.databinding.ActivitySingletonBinding; import com.example.jingbin.designpattern.singleton.ehan.SingletonEHan; import com.example.jingbin.designpattern.singleton.enums.SingletonEnum; import com.example.jingbin.designpattern.singleton.inclass.SingletonIn; import com.example.jingbin.designpattern.singleton.lanhan.SingletonLanHan; -import butterknife.BindView; -import butterknife.ButterKnife; - public class SingletonActivity extends AppCompatActivity implements View.OnClickListener { - @BindView(R.id.bt_ehan) - Button btEhan; - @BindView(R.id.bt_lanhan) - Button btLanhan; - @BindView(R.id.bt_inclass) - Button btInclass; - @BindView(R.id.bt_enum) - Button btEnum; - @BindView(R.id.activity_singleton) - LinearLayout activitySingleton; - @BindView(R.id.tv_define) - TextView tvDefine; - @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.activity_singleton); - ButterKnife.bind(this); + ActivitySingletonBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_singleton); setTitle("单例设计模式"); - tvDefine.setText(EMTagHandler.fromHtml(AppConstant.SINGLETON_DEFINE)); - btEhan.setOnClickListener(this); - btLanhan.setOnClickListener(this); - btInclass.setOnClickListener(this); - btEnum.setOnClickListener(this); + binding.tvDefine.setText(EMTagHandler.fromHtml(AppConstant.SINGLETON_DEFINE)); + binding.btEhan.setOnClickListener(this); + binding.btLanhan.setOnClickListener(this); + binding.btInclass.setOnClickListener(this); + binding.btEnum.setOnClickListener(this); } @Override diff --git a/app/src/main/java/com/example/jingbin/designpattern/state/StateActivity.java b/app/src/main/java/com/example/jingbin/designpattern/state/StateActivity.java index 252fad0..7903e9e 100644 --- a/app/src/main/java/com/example/jingbin/designpattern/state/StateActivity.java +++ b/app/src/main/java/com/example/jingbin/designpattern/state/StateActivity.java @@ -1,22 +1,19 @@ package com.example.jingbin.designpattern.state; import android.os.Bundle; -import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.view.View; -import android.widget.Button; -import android.widget.LinearLayout; -import android.widget.TextView; + +import androidx.appcompat.app.AppCompatActivity; +import androidx.databinding.DataBindingUtil; import com.example.jingbin.designpattern.R; import com.example.jingbin.designpattern.app.AppConstant; import com.example.jingbin.designpattern.app.EMTagHandler; +import com.example.jingbin.designpattern.databinding.ActivityStateBinding; import com.example.jingbin.designpattern.state.better.VendingMachineBetter; import com.example.jingbin.designpattern.state.old.VendingMachine; -import butterknife.BindView; -import butterknife.ButterKnife; - /** * 状态模式 * 定义:允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。 @@ -24,30 +21,18 @@ */ public class StateActivity extends AppCompatActivity implements View.OnClickListener { - @BindView(R.id.bt_facade) - Button btFacade; - @BindView(R.id.tv_define) - TextView tvDefine; - @BindView(R.id.activity_state) - LinearLayout activityState; - @BindView(R.id.bt_facade_old) - Button btFacadeOld; - @BindView(R.id.bt_facade_better) - Button btFacadeBetter; - @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.activity_state); - ButterKnife.bind(this); + ActivityStateBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_state); setTitle("状态模式"); - tvDefine.setText(EMTagHandler.fromHtml(AppConstant.STATE_DEFINE)); - btFacadeOld.setText("最初实现待改进"); - btFacadeBetter.setText("改进过的售货机"); + binding.tvDefine.setText(EMTagHandler.fromHtml(AppConstant.STATE_DEFINE)); + binding.btFacadeOld.setText("最初实现待改进"); + binding.btFacadeBetter.setText("改进过的售货机"); - btFacadeOld.setOnClickListener(this); - btFacadeBetter.setOnClickListener(this); + binding.btFacadeOld.setOnClickListener(this); + binding.btFacadeBetter.setOnClickListener(this); } @Override @@ -73,7 +58,7 @@ public void onClick(View v) { vendingMachine.backMoney(); vendingMachine.turnCrank(); break; - + case R.id.bt_facade_better:// 改进过的售货机 VendingMachineBetter machineBetter = new VendingMachineBetter(4); // machineBetter.dispense();无法直接操作 出商品(出商品是自动的); diff --git a/app/src/main/java/com/example/jingbin/designpattern/strategy/StrategyActivity.java b/app/src/main/java/com/example/jingbin/designpattern/strategy/StrategyActivity.java index c3bddbe..02e2564 100644 --- a/app/src/main/java/com/example/jingbin/designpattern/strategy/StrategyActivity.java +++ b/app/src/main/java/com/example/jingbin/designpattern/strategy/StrategyActivity.java @@ -1,51 +1,38 @@ package com.example.jingbin.designpattern.strategy; import android.os.Bundle; -import android.support.v7.app.AppCompatActivity; import android.view.View; -import android.widget.Button; -import android.widget.LinearLayout; -import android.widget.TextView; + +import androidx.appcompat.app.AppCompatActivity; +import androidx.databinding.DataBindingUtil; import com.example.jingbin.designpattern.R; import com.example.jingbin.designpattern.app.AppConstant; import com.example.jingbin.designpattern.app.EMTagHandler; +import com.example.jingbin.designpattern.databinding.ActivityStategyBinding; import com.example.jingbin.designpattern.strategy.better.AttackXL; import com.example.jingbin.designpattern.strategy.better.DefendTMS; import com.example.jingbin.designpattern.strategy.better.DisplayYZ; import com.example.jingbin.designpattern.strategy.better.RoleA; import com.example.jingbin.designpattern.strategy.better.RunJCTQ; -import butterknife.BindView; -import butterknife.ButterKnife; - /** * 策略模式(Strategy Pattern):定义了算法族,分别封装起来, * 让它们之间可相互替换,此模式让算法的变化独立于使用算法的客户。 */ public class StrategyActivity extends AppCompatActivity { - @BindView(R.id.bt_strategy) - Button btStrategy; - @BindView(R.id.activity_stategy) - LinearLayout activityStategy; - @BindView(R.id.tv_define) - TextView tvDefine; - @BindView(R.id.bt_strategy_text) - Button btStrategyText; - @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.activity_stategy); - ButterKnife.bind(this); + ActivityStategyBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_stategy); setTitle("策略模式"); - tvDefine.setText(EMTagHandler.fromHtml(AppConstant.STRATEGY_DEFINE)); - btStrategyText.setText("创建角色A,并设定样子,攻击,逃跑,防御"); + binding.tvDefine.setText(EMTagHandler.fromHtml(AppConstant.STRATEGY_DEFINE)); + binding.btStrategyText.setText("创建角色A,并设定样子,攻击,逃跑,防御"); - btStrategyText.setOnClickListener(new View.OnClickListener() { + binding.btStrategyText.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { RoleA roleA = new RoleA("---A"); diff --git a/app/src/main/java/com/example/jingbin/designpattern/templatemethod/TemplateMethodActivity.java b/app/src/main/java/com/example/jingbin/designpattern/templatemethod/TemplateMethodActivity.java index 5a3add5..f35210d 100644 --- a/app/src/main/java/com/example/jingbin/designpattern/templatemethod/TemplateMethodActivity.java +++ b/app/src/main/java/com/example/jingbin/designpattern/templatemethod/TemplateMethodActivity.java @@ -1,24 +1,21 @@ package com.example.jingbin.designpattern.templatemethod; import android.os.Bundle; -import android.support.v7.app.AppCompatActivity; import android.view.View; -import android.widget.Button; -import android.widget.LinearLayout; -import android.widget.TextView; + +import androidx.appcompat.app.AppCompatActivity; +import androidx.databinding.DataBindingUtil; import com.example.jingbin.designpattern.R; import com.example.jingbin.designpattern.app.AppConstant; import com.example.jingbin.designpattern.app.EMTagHandler; +import com.example.jingbin.designpattern.databinding.ActivityTemplateMethodBinding; import com.example.jingbin.designpattern.templatemethod.worker.CTOWorker; import com.example.jingbin.designpattern.templatemethod.worker.HRWorker; import com.example.jingbin.designpattern.templatemethod.worker.ITWorker; import com.example.jingbin.designpattern.templatemethod.worker.OtherWorker; import com.example.jingbin.designpattern.templatemethod.worker.QAWorker; -import butterknife.BindView; -import butterknife.ButterKnife; - /** * 模版方法模式 展现程序员的一天 * 定义:定义了一个算法的骨架,而将一些步骤延迟到子类中,模版方法使得子类可以在不改变算法结构的情况下,重新定义算法的步骤。 @@ -29,29 +26,17 @@ */ public class TemplateMethodActivity extends AppCompatActivity implements View.OnClickListener { - @BindView(R.id.bt_template_method) - Button btTemplateMethod; - @BindView(R.id.bt_template_method_text) - Button btTemplateMethodText; - @BindView(R.id.tv_define) - TextView tvDefine; - @BindView(R.id.activity_template_method) - LinearLayout activityTemplateMethod; - @BindView(R.id.bt_template_method_text2) - Button btTemplateMethodText2; - @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.activity_template_method); - ButterKnife.bind(this); + ActivityTemplateMethodBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_template_method); setTitle("模板方法模式"); - tvDefine.setText(EMTagHandler.fromHtml(AppConstant.TEMPLATE_METHOD_DEFINE)); + binding.tvDefine.setText(EMTagHandler.fromHtml(AppConstant.TEMPLATE_METHOD_DEFINE)); - btTemplateMethodText.setText("查看所有人员的工作情况"); - btTemplateMethodText2.setText("查看程序猿离开公司的时间"); - btTemplateMethodText.setOnClickListener(this); - btTemplateMethodText2.setOnClickListener(this); + binding.btTemplateMethodText.setText("查看所有人员的工作情况"); + binding.btTemplateMethodText2.setText("查看程序猿离开公司的时间"); + binding.btTemplateMethodText.setOnClickListener(this); + binding.btTemplateMethodText2.setOnClickListener(this); } @Override diff --git a/app/src/main/java/com/example/jingbin/designpattern/visitor/VisitorActivity.java b/app/src/main/java/com/example/jingbin/designpattern/visitor/VisitorActivity.java index f03280d..8acc68f 100644 --- a/app/src/main/java/com/example/jingbin/designpattern/visitor/VisitorActivity.java +++ b/app/src/main/java/com/example/jingbin/designpattern/visitor/VisitorActivity.java @@ -1,8 +1,8 @@ package com.example.jingbin.designpattern.visitor; -import android.databinding.DataBindingUtil; +import androidx.databinding.DataBindingUtil; import android.os.Bundle; -import android.support.v7.app.AppCompatActivity; +import androidx.appcompat.app.AppCompatActivity; import android.view.View; import com.example.jingbin.designpattern.R; diff --git a/app/src/main/res/layout/activity_adapter.xml b/app/src/main/res/layout/activity_adapter.xml index 1a106fe..41207a9 100644 --- a/app/src/main/res/layout/activity_adapter.xml +++ b/app/src/main/res/layout/activity_adapter.xml @@ -1,49 +1,51 @@ - + -